aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2012-08-09 11:25:39 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-08-09 11:25:39 +0200
commitc167d67e1cc2c9f9ff50fa06757b1cd246a71383 (patch)
tree0eae34a1c108743f8818c87fb3d5064497fb5fab
parent1e844f15ece858283240e17ddd58140e6bb7e975 (diff)
Imported Upstream version 0.11.93upstream/0.11.93
-rw-r--r--Makefile.in6
-rw-r--r--aclocal.m46
-rw-r--r--common/Makefile.in4
-rw-r--r--common/m4/Makefile.in4
-rw-r--r--common/m4/gst-arch.m43
-rw-r--r--common/m4/gst-glib2.m438
-rw-r--r--common/m4/gst-parser.m42
-rw-r--r--common/m4/gst.m45
-rwxr-xr-xcompile91
-rwxr-xr-xconfig.sub11
-rwxr-xr-xconfigure487
-rw-r--r--configure.ac19
-rwxr-xr-xdepcomp124
-rw-r--r--docs/Makefile.in4
-rw-r--r--docs/plugins/Makefile.am3
-rw-r--r--docs/plugins/Makefile.in7
-rw-r--r--docs/plugins/gst-plugins-ugly-plugins-docs.sgml2
-rw-r--r--docs/plugins/gst-plugins-ugly-plugins-sections.txt14
-rw-r--r--docs/plugins/html/ch01.html7
-rw-r--r--docs/plugins/html/ch02.html5
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html6
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-mad.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html8
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html74
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html8
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-rademux.html6
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-siddec.html4
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html190
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-twolame.html8
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html8
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html75
-rw-r--r--docs/plugins/html/gst-plugins-ugly-plugins.devhelp272
-rw-r--r--docs/plugins/html/index.html10
-rw-r--r--docs/plugins/html/index.sgml8
-rw-r--r--docs/plugins/inspect/plugin-synaesthesia.xml34
-rw-r--r--docs/plugins/inspect/plugin-xingmux.xml34
-rw-r--r--ext/Makefile.in4
-rw-r--r--ext/a52dec/Makefile.in4
-rw-r--r--ext/a52dec/gsta52dec.c2
-rw-r--r--ext/amrnb/Makefile.in4
-rw-r--r--ext/amrwbdec/Makefile.in4
-rw-r--r--ext/cdio/Makefile.in4
-rw-r--r--ext/dvdread/Makefile.in4
-rw-r--r--ext/dvdread/dvdreadsrc.c36
-rw-r--r--ext/lame/Makefile.in4
-rw-r--r--ext/lame/gstlamemp3enc.c6
-rw-r--r--ext/mad/Makefile.in4
-rw-r--r--ext/mpeg2dec/Makefile.in4
-rw-r--r--ext/mpeg2dec/gstmpeg2dec.c1514
-rw-r--r--ext/mpeg2dec/gstmpeg2dec.h58
-rw-r--r--ext/sidplay/Makefile.in4
-rw-r--r--ext/sidplay/gstsiddec.cc44
-rw-r--r--ext/twolame/Makefile.in4
-rw-r--r--ext/x264/Makefile.in4
-rw-r--r--ext/x264/gstx264enc.c786
-rw-r--r--ext/x264/gstx264enc.h24
-rw-r--r--gst-libs/Makefile.in4
-rw-r--r--gst-libs/gst/Makefile.in4
-rw-r--r--gst-plugins-ugly.doap10
-rw-r--r--gst-plugins-ugly.spec2
-rw-r--r--gst/Makefile.in4
-rw-r--r--gst/asfdemux/Makefile.in4
-rw-r--r--gst/asfdemux/asfpacket.c75
-rw-r--r--gst/asfdemux/asfpacket.h8
-rw-r--r--gst/asfdemux/gstasfdemux.c114
-rw-r--r--gst/asfdemux/gstrtpasfdepay.c55
-rw-r--r--gst/dvdlpcmdec/Makefile.in4
-rw-r--r--gst/dvdlpcmdec/gstdvdlpcmdec.c3
-rw-r--r--gst/dvdsub/Makefile.in4
-rw-r--r--gst/realmedia/Makefile.in4
-rw-r--r--gst/realmedia/gstrdtbuffer.c2
-rw-r--r--gst/realmedia/rademux.c31
-rw-r--r--gst/realmedia/rdtmanager.c25
-rw-r--r--gst/realmedia/rdtmanager.h1
-rw-r--r--gst/realmedia/rmdemux.c28
-rw-r--r--gst/realmedia/rmutils.c2
-rw-r--r--gst/synaesthesia/Makefile.am26
-rw-r--r--gst/synaesthesia/Makefile.in786
-rw-r--r--gst/synaesthesia/README151
-rw-r--r--gst/synaesthesia/gstsynaesthesia.c547
-rw-r--r--gst/synaesthesia/gstsynaesthesia.h82
-rw-r--r--gst/synaesthesia/synaescope.c460
-rw-r--r--gst/synaesthesia/synaescope.h42
-rw-r--r--gst/xingmux/Makefile.in4
-rw-r--r--ltmain.sh4
-rw-r--r--m4/Makefile.in4
-rw-r--r--m4/libtool.m428
-rw-r--r--pkgconfig/Makefile.in4
-rw-r--r--po/af.gmobin530 -> 530 bytes
-rw-r--r--po/af.po2
-rw-r--r--po/az.gmobin588 -> 588 bytes
-rw-r--r--po/az.po2
-rw-r--r--po/bg.gmobin2666 -> 2666 bytes
-rw-r--r--po/bg.po2
-rw-r--r--po/ca.gmobin2144 -> 2144 bytes
-rw-r--r--po/ca.po2
-rw-r--r--po/cs.gmobin1853 -> 1853 bytes
-rw-r--r--po/cs.po2
-rw-r--r--po/da.gmobin1970 -> 1970 bytes
-rw-r--r--po/da.po2
-rw-r--r--po/de.gmobin2296 -> 2296 bytes
-rw-r--r--po/de.po2
-rw-r--r--po/el.gmobin2876 -> 2876 bytes
-rw-r--r--po/el.po2
-rw-r--r--po/en_GB.gmobin529 -> 529 bytes
-rw-r--r--po/en_GB.po2
-rw-r--r--po/eo.gmobin2088 -> 2088 bytes
-rw-r--r--po/eo.po2
-rw-r--r--po/es.gmobin2147 -> 2147 bytes
-rw-r--r--po/es.po2
-rw-r--r--po/eu.gmobin1862 -> 1862 bytes
-rw-r--r--po/eu.po2
-rw-r--r--po/fi.gmobin1776 -> 1776 bytes
-rw-r--r--po/fi.po2
-rw-r--r--po/fr.gmobin2119 -> 2119 bytes
-rw-r--r--po/fr.po2
-rw-r--r--po/gl.gmobin2162 -> 2162 bytes
-rw-r--r--po/gl.po2
-rw-r--r--po/gst-plugins-ugly-1.0.pot6
-rw-r--r--po/hu.gmobin1816 -> 1816 bytes
-rw-r--r--po/hu.po2
-rw-r--r--po/id.gmobin1959 -> 1959 bytes
-rw-r--r--po/id.po2
-rw-r--r--po/it.gmobin1776 -> 1776 bytes
-rw-r--r--po/it.po2
-rw-r--r--po/ja.gmobin2447 -> 2447 bytes
-rw-r--r--po/ja.po2
-rw-r--r--po/lt.gmobin1332 -> 1332 bytes
-rw-r--r--po/lt.po2
-rw-r--r--po/lv.gmobin2128 -> 2128 bytes
-rw-r--r--po/lv.po2
-rw-r--r--po/ms.gmobin1701 -> 1701 bytes
-rw-r--r--po/ms.po2
-rw-r--r--po/mt.gmobin1690 -> 1690 bytes
-rw-r--r--po/mt.po2
-rw-r--r--po/nb.gmobin1211 -> 1211 bytes
-rw-r--r--po/nb.po2
-rw-r--r--po/nl.gmobin2118 -> 2118 bytes
-rw-r--r--po/nl.po2
-rw-r--r--po/or.gmobin604 -> 604 bytes
-rw-r--r--po/or.po2
-rw-r--r--po/pl.gmobin2157 -> 2157 bytes
-rw-r--r--po/pl.po2
-rw-r--r--po/pt_BR.gmobin1882 -> 1882 bytes
-rw-r--r--po/pt_BR.po2
-rw-r--r--po/ro.gmobin1913 -> 1913 bytes
-rw-r--r--po/ro.po2
-rw-r--r--po/ru.gmobin2616 -> 2616 bytes
-rw-r--r--po/ru.po2
-rw-r--r--po/sk.gmobin1945 -> 1945 bytes
-rw-r--r--po/sk.po2
-rw-r--r--po/sl.gmobin2180 -> 2180 bytes
-rw-r--r--po/sl.po2
-rw-r--r--po/sq.gmobin538 -> 538 bytes
-rw-r--r--po/sq.po2
-rw-r--r--po/sr.gmobin2670 -> 2670 bytes
-rw-r--r--po/sr.po2
-rw-r--r--po/sv.gmobin1727 -> 1727 bytes
-rw-r--r--po/sv.po2
-rw-r--r--po/tr.gmobin2064 -> 2064 bytes
-rw-r--r--po/tr.po2
-rw-r--r--po/uk.gmobin2742 -> 2742 bytes
-rw-r--r--po/uk.po2
-rw-r--r--po/vi.gmobin1891 -> 1891 bytes
-rw-r--r--po/vi.po2
-rw-r--r--po/zh_CN.gmobin1878 -> 1878 bytes
-rw-r--r--po/zh_CN.po2
-rw-r--r--tests/Makefile.in4
-rw-r--r--tests/check/Makefile.in4
-rw-r--r--tests/check/elements/amrnbenc.c2
-rw-r--r--tests/check/elements/x264enc.c2
-rw-r--r--win32/common/config.h8
194 files changed, 1861 insertions, 4762 deletions
diff --git a/Makefile.in b/Makefile.in
index 9505b8f..ed6d5c9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -243,7 +243,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
@@ -796,7 +798,7 @@ distcheck: dist
*.zip*) \
unzip $(distdir).zip ;;\
esac
- chmod -R a-w $(distdir); chmod a+w $(distdir)
+ chmod -R a-w $(distdir); chmod u+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
diff --git a/aclocal.m4 b/aclocal.m4
index db1b452..80062a0 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.11.5 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
@@ -38,7 +38,7 @@ 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.5], [],
+m4_if([$1], [1.11.6], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
])
@@ -54,7 +54,7 @@ m4_define([_AM_AUTOCONF_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.5])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/common/Makefile.in b/common/Makefile.in
index 6b2e2d9..d1b82b6 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -207,7 +207,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index ddd027d..0e4480c 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -167,7 +167,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/common/m4/gst-arch.m4 b/common/m4/gst-arch.m4
index ff0954a..077a20b 100644
--- a/common/m4/gst-arch.m4
+++ b/common/m4/gst-arch.m4
@@ -5,9 +5,6 @@ dnl defines HOST_CPU
AC_DEFUN([AG_GST_ARCH],
[
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use host_ variables
- AC_REQUIRE([AC_CANONICAL_TARGET]) dnl we use target_ variables
-
dnl Determine CPU
case "x${target_cpu}" in
xi?86 | xk? | xi?86_64)
diff --git a/common/m4/gst-glib2.m4 b/common/m4/gst-glib2.m4
index b141bee..3f3d565 100644
--- a/common/m4/gst-glib2.m4
+++ b/common/m4/gst-glib2.m4
@@ -68,6 +68,44 @@ AC_DEFUN([AG_GST_GLIB_CHECK],
GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_ASSERT"
fi
+ dnl Find location of glib utils. People may want to or have to override these,
+ dnl e.g. in a cross-compile situation where PATH is a bit messed up. We need
+ dnl for these tools to work on the host, so can't just use the one from the
+ dnl GLib installation that pkg-config picks up, as that might be for a
+ dnl different target architecture.
+ dnl
+ dnl glib-genmarshal:
+ AC_MSG_CHECKING(for glib-genmarshal)
+ if test "x$GLIB_GENMARSHAL" != "x"; then
+ AC_MSG_RESULT([$GLIB_GENMARSHAL (from environment)])
+ else
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ if $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
+ AC_MSG_RESULT([$GLIB_GENMARSHAL (from pkg-config path)])
+ else
+ AC_PATH_PROG(GLIB_GENMARSHAL, [glib-genmarshal], [glib-genmarshal])
+ AC_MSG_RESULT([$GLIB_GENMARSHAL])
+ fi
+ fi
+ if ! $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
+ AC_MSG_WARN([$GLIB_GENMARSHAL does not seem to work!])
+ fi
+ AC_SUBST(GLIB_GENMARSHAL)
+
+ dnl glib-mkenums:
+ AC_MSG_CHECKING(for glib-mkenums)
+ if test "x$GLIB_MKENUMS" != "x"; then
+ AC_MSG_RESULT([$GLIB_MKENUMS (from environment)])
+ else
+ dnl glib-mkenums is written in perl so should always work really
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+ AC_MSG_RESULT([$GLIB_MKENUMS])
+ fi
+ if ! $GLIB_MKENUMS --version 2>/dev/null >/dev/null; then
+ AC_MSG_WARN([$GLIB_MKENUMS does not seem to work!])
+ fi
+ AC_SUBST(GLIB_MKENUMS)
+
dnl for the poor souls who for example have glib in /usr/local
AS_SCRUB_INCLUDE(GLIB_CFLAGS)
diff --git a/common/m4/gst-parser.m4 b/common/m4/gst-parser.m4
index 2cae45d..710da89 100644
--- a/common/m4/gst-parser.m4
+++ b/common/m4/gst-parser.m4
@@ -34,7 +34,7 @@ AC_DEFUN([AG_GST_FLEX_CHECK],
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`
+ flex_version=`$FLEX_PATH --version | head -n 1 | awk '{print $2}'`
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+)/;
diff --git a/common/m4/gst.m4 b/common/m4/gst.m4
index ddfde51..d4c53cb 100644
--- a/common/m4/gst.m4
+++ b/common/m4/gst.m4
@@ -3,10 +3,15 @@ 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
+dnl
+dnl We call AC_CANONICAL_TARGET and AC_CANONICAL_HOST so that
+dnl it is valid before AC_ARG_PROGRAM is called
AC_DEFUN([AG_GST_INIT],
[
m4_pattern_forbid(^_?AG_GST_)
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use host_ variables
+ AC_REQUIRE([AC_CANONICAL_TARGET]) dnl we use target_ variables
])
dnl AG_GST_PKG_CONFIG_PATH
diff --git a/compile b/compile
index b1f4749..862a14e 100755
--- a/compile
+++ b/compile
@@ -1,7 +1,7 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
-scriptversion=2012-01-04.17; # UTC
+scriptversion=2012-03-05.13; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
# Software Foundation, Inc.
@@ -79,6 +79,48 @@ func_file_conv ()
esac
}
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+ func_file_conv "$1"
+ if test -z "$lib_path"; then
+ lib_path=$file
+ else
+ lib_path="$lib_path;$file"
+ fi
+ linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+ lib=$1
+ 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
+ lib=$dir/$lib.dll.lib
+ break
+ fi
+ if test -f "$dir/$lib.lib"; then
+ found=yes
+ lib=$dir/$lib.lib
+ break
+ fi
+ done
+ IFS=$save_IFS
+
+ if test "$found" != yes; then
+ lib=$lib.lib
+ fi
+}
+
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
@@ -109,43 +151,34 @@ func_cl_wrapper ()
;;
esac
;;
+ -I)
+ eat=1
+ func_file_conv "$2" mingw
+ set x "$@" -I"$file"
+ shift
+ ;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
+ -l)
+ eat=1
+ func_cl_dashl "$2"
+ set x "$@" "$lib"
+ 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"
+ func_cl_dashl "${1#-l}"
+ set x "$@" "$lib"
shift
;;
+ -L)
+ eat=1
+ func_cl_dashL "$2"
+ ;;
-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"
+ func_cl_dashL "${1#-L}"
;;
-static)
shared=false
diff --git a/config.sub b/config.sub
index c894da4..6205f84 100755
--- a/config.sub
+++ b/config.sub
@@ -4,7 +4,7 @@
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2012-02-10'
+timestamp='2012-04-18'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -225,6 +225,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -1537,6 +1543,9 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ hexagon-*)
+ os=-elf
+ ;;
tic54x-*)
os=-coff
;;
diff --git a/configure b/configure
index cf61644..34fcf5e 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer Ugly Plug-ins 0.11.92.
+# Generated by GNU Autoconf 2.69 for GStreamer Ugly Plug-ins 0.11.93.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='GStreamer Ugly Plug-ins'
PACKAGE_TARNAME='gst-plugins-ugly'
-PACKAGE_VERSION='0.11.92'
-PACKAGE_STRING='GStreamer Ugly Plug-ins 0.11.92'
+PACKAGE_VERSION='0.11.93'
+PACKAGE_STRING='GStreamer Ugly Plug-ins 0.11.93'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -691,8 +691,6 @@ 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_XINGMUX_FALSE
@@ -745,6 +743,8 @@ GIO_LDFLAGS
GIO_LIBS
GIO_CFLAGS
GLIB_EXTRA_CFLAGS
+GLIB_MKENUMS
+GLIB_GENMARSHAL
GLIB_LIBS
GLIB_CFLAGS
GLIB_REQ
@@ -814,10 +814,6 @@ HAVE_CPU_PPC_FALSE
HAVE_CPU_PPC_TRUE
HAVE_CPU_I386_FALSE
HAVE_CPU_I386_TRUE
-target_os
-target_vendor
-target_cpu
-target
BUILD_EXPERIMENTAL_FALSE
BUILD_EXPERIMENTAL_TRUE
USE_EXPERIMENTAL_FALSE
@@ -914,14 +910,6 @@ 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
@@ -953,6 +941,18 @@ am__isrc
INSTALL_DATA
INSTALL_SCRIPT
INSTALL_PROGRAM
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
target_alias
host_alias
build_alias
@@ -1041,7 +1041,6 @@ enable_dvdlpcmdec
enable_dvdsub
enable_xingmux
enable_realmedia
-enable_synaesthesia
enable_a52dec
with_a52dec_prefix
enable_amrnb
@@ -1641,7 +1640,7 @@ 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.11.92 to adapt to many kinds of systems.
+\`configure' configures GStreamer Ugly Plug-ins 0.11.93 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1713,7 +1712,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 0.11.92:";;
+ short | recursive ) echo "Configuration of GStreamer Ugly Plug-ins 0.11.93:";;
esac
cat <<\_ACEOF
@@ -1757,7 +1756,6 @@ Optional Features:
--disable-dvdsub disable dependency-less dvdsub plugin
--disable-xingmux disable dependency-less xingmux 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
@@ -1936,7 +1934,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer Ugly Plug-ins configure 0.11.92
+GStreamer Ugly Plug-ins configure 0.11.93
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2842,7 +2840,7 @@ 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.11.92, which was
+It was created by GStreamer Ugly Plug-ins $as_me 0.11.93, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3192,12 +3190,6 @@ 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
@@ -3227,6 +3219,122 @@ 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.
+# 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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+
+
+am__api_version='1.11'
+
# 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:
@@ -3663,7 +3771,7 @@ fi
# Define the identity of the package.
PACKAGE='gst-plugins-ugly'
- VERSION='0.11.92'
+ VERSION='0.11.93'
cat >>confdefs.h <<_ACEOF
@@ -3786,9 +3894,9 @@ $as_echo "$am_cv_prog_tar_ustar" >&6; }
- PACKAGE_VERSION_MAJOR=$(echo 0.11.92 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 0.11.92 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 0.11.92 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 0.11.93 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 0.11.93 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 0.11.93 | cut -d'.' -f3)
@@ -3799,7 +3907,7 @@ $as_echo "$am_cv_prog_tar_ustar" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 0.11.92 | cut -d'.' -f4)
+ NANO=$(echo 0.11.93 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -3851,76 +3959,6 @@ fi
-# 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.
@@ -6163,10 +6201,6 @@ freebsd* | dragonfly*)
fi
;;
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
haiku*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -6205,7 +6239,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -9443,7 +9477,7 @@ lt_prog_compiler_static=
lt_prog_compiler_static='-non_shared'
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -11613,17 +11647,6 @@ freebsd* | dragonfly*)
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
@@ -11740,7 +11763,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
@@ -12788,8 +12811,8 @@ CC="$lt_save_CC"
-GST_REQ=0.11.91
-GSTPB_REQ=0.11.91
+GST_REQ=0.11.93
+GSTPB_REQ=0.11.93
@@ -15515,46 +15538,6 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
-$as_echo_n "checking target system type... " >&6; }
-if ${ac_cv_target+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "x$target_alias" = x; then
- ac_cv_target=$ac_cv_host
-else
- ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
-$as_echo "$ac_cv_target" >&6; }
-case $ac_cv_target in
-*-*-*) ;;
-*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
-esac
-target=$ac_cv_target
-ac_save_IFS=$IFS; IFS='-'
-set x $ac_cv_target
-shift
-target_cpu=$1
-target_vendor=$2
-shift; shift
-# Remember, the first character of IFS is used to create $*,
-# except with old shells:
-target_os=$*
-IFS=$ac_save_IFS
-case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
case "x${target_cpu}" in
xi?86 | xk? | xi?86_64)
@@ -18401,9 +18384,6 @@ fi
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
@@ -18565,7 +18545,7 @@ fi
inherit_rpath_CXX=yes
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -19425,7 +19405,7 @@ lt_prog_compiler_static_CXX=
;;
esac
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -20297,17 +20277,6 @@ freebsd* | dragonfly*)
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
@@ -20424,7 +20393,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
@@ -22345,7 +22314,7 @@ _ACEOF
-GLIB_REQ=2.31.14
+GLIB_REQ=2.32.0
@@ -22502,6 +22471,84 @@ fi
GLIB_EXTRA_CFLAGS="$GLIB_EXTRA_CFLAGS -DG_DISABLE_ASSERT"
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib-genmarshal" >&5
+$as_echo_n "checking for glib-genmarshal... " >&6; }
+ if test "x$GLIB_GENMARSHAL" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL (from environment)" >&5
+$as_echo "$GLIB_GENMARSHAL (from environment)" >&6; }
+ else
+ GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
+ if $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL (from pkg-config path)" >&5
+$as_echo "$GLIB_GENMARSHAL (from pkg-config path)" >&6; }
+ else
+ # Extract the first word of "glib-genmarshal", so it can be a program name with args.
+set dummy glib-genmarshal; 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_GLIB_GENMARSHAL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GLIB_GENMARSHAL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # 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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GLIB_GENMARSHAL="$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_GLIB_GENMARSHAL" && ac_cv_path_GLIB_GENMARSHAL="glib-genmarshal"
+ ;;
+esac
+fi
+GLIB_GENMARSHAL=$ac_cv_path_GLIB_GENMARSHAL
+if test -n "$GLIB_GENMARSHAL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_GENMARSHAL" >&5
+$as_echo "$GLIB_GENMARSHAL" >&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: $GLIB_GENMARSHAL" >&5
+$as_echo "$GLIB_GENMARSHAL" >&6; }
+ fi
+ fi
+ if ! $GLIB_GENMARSHAL --version 2>/dev/null >/dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $GLIB_GENMARSHAL does not seem to work!" >&5
+$as_echo "$as_me: WARNING: $GLIB_GENMARSHAL does not seem to work!" >&2;}
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib-mkenums" >&5
+$as_echo_n "checking for glib-mkenums... " >&6; }
+ if test "x$GLIB_MKENUMS" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_MKENUMS (from environment)" >&5
+$as_echo "$GLIB_MKENUMS (from environment)" >&6; }
+ else
+ GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_MKENUMS" >&5
+$as_echo "$GLIB_MKENUMS" >&6; }
+ fi
+ if ! $GLIB_MKENUMS --version 2>/dev/null >/dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $GLIB_MKENUMS does not seem to work!" >&5
+$as_echo "$as_me: WARNING: $GLIB_MKENUMS does not seem to work!" >&2;}
+ fi
+
+
GIVEN_CFLAGS=$GLIB_CFLAGS
INCLUDE_DIRS=`echo | cpp -v 2>&1`
@@ -22627,7 +22674,7 @@ _ACEOF
- ORC_REQ=0.4.6
+ ORC_REQ=0.4.16
# Check whether --enable-orc was given.
if test "${enable_orc+set}" = set; then :
@@ -24629,49 +24676,6 @@ 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_NONPORTED " | 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"
@@ -24690,20 +24694,6 @@ if test "x$HAVE_WINSOCK2_H" = "xyes"; then
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
@@ -26700,7 +26690,7 @@ if test x$USE_X264 = xyes; then
HAVE_X264=no
- which="x264 >= 0.106.0"
+ which="x264 >= 0.120.0"
required="no"
@@ -26961,7 +26951,7 @@ GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^_*gst_plugin_
-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/realmedia/Makefile gst/synaesthesia/Makefile gst/xingmux/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"
+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/realmedia/Makefile gst/xingmux/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 \
@@ -27282,14 +27272,6 @@ if test -z "${USE_PLUGIN_REALMEDIA_TRUE}" && test -z "${USE_PLUGIN_REALMEDIA_FAL
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
@@ -27775,7 +27757,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# 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.11.92, which was
+This file was extended by GStreamer Ugly Plug-ins $as_me 0.11.93, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -27841,7 +27823,7 @@ _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.11.92
+GStreamer Ugly Plug-ins config.status 0.11.93
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -28387,7 +28369,6 @@ do
"gst/dvdlpcmdec/Makefile") CONFIG_FILES="$CONFIG_FILES gst/dvdlpcmdec/Makefile" ;;
"gst/dvdsub/Makefile") CONFIG_FILES="$CONFIG_FILES gst/dvdsub/Makefile" ;;
"gst/realmedia/Makefile") CONFIG_FILES="$CONFIG_FILES gst/realmedia/Makefile" ;;
- "gst/synaesthesia/Makefile") CONFIG_FILES="$CONFIG_FILES gst/synaesthesia/Makefile" ;;
"gst/xingmux/Makefile") CONFIG_FILES="$CONFIG_FILES gst/xingmux/Makefile" ;;
"ext/Makefile") CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;;
"ext/a52dec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/a52dec/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index c3ba492..a810fee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@ 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.11.92,
+AC_INIT(GStreamer Ugly Plug-ins, 0.11.93,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gst-plugins-ugly)
@@ -47,8 +47,8 @@ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION",
AS_LIBTOOL(GST, 0, 0, 0)
dnl *** required versions of GStreamer stuff ***
-GST_REQ=0.11.91
-GSTPB_REQ=0.11.91
+GST_REQ=0.11.93
+GSTPB_REQ=0.11.93
dnl *** autotools stuff ****
@@ -149,10 +149,10 @@ AG_GST_CHECK_FUNCTION
dnl *** checks for dependency libraries ***
dnl GLib is required
-GLIB_REQ=2.31.14
+GLIB_REQ=2.32.0
AG_GST_GLIB_CHECK([$GLIB_REQ])
-ORC_CHECK([0.4.6])
+ORC_CHECK([0.4.16])
dnl checks for gstreamer
dnl uninstalled is selected preferentially -- see pkg-config(1)
@@ -218,7 +218,6 @@ AG_GST_CHECK_PLUGIN(dvdlpcmdec)
AG_GST_CHECK_PLUGIN(dvdsub)
AG_GST_CHECK_PLUGIN(xingmux)
AG_GST_CHECK_PLUGIN(realmedia)
-AG_GST_CHECK_PLUGIN(synaesthesia)
AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
@@ -227,11 +226,6 @@ if test "x$HAVE_WINSOCK2_H" = "xyes"; then
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 !
@@ -357,7 +351,7 @@ AG_GST_CHECK_FEATURE(TWOLAME, [twolame], twolame, [
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.106.0)
+ AG_GST_PKG_CHECK_MODULES(X264, x264 >= 0.120.0)
])
else
@@ -444,7 +438,6 @@ gst/asfdemux/Makefile
gst/dvdlpcmdec/Makefile
gst/dvdsub/Makefile
gst/realmedia/Makefile
-gst/synaesthesia/Makefile
gst/xingmux/Makefile
ext/Makefile
ext/a52dec/Makefile
diff --git a/depcomp b/depcomp
index bd0ac08..25a39e6 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,10 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2011-12-04.11; # UTC
+scriptversion=2012-03-27.16; # UTC
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011 Free Software Foundation, Inc.
+# 2011, 2012 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
@@ -28,7 +28,7 @@ scriptversion=2011-12-04.11; # UTC
case $1 in
'')
- echo "$0: No command. Try \`$0 --help' for more information." 1>&2
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
@@ -40,8 +40,8 @@ as side-effects.
Environment variables:
depmode Dependency tracking mode.
- source Source file read by `PROGRAMS ARGS'.
- object Object file output by `PROGRAMS ARGS'.
+ 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.
@@ -57,6 +57,12 @@ EOF
;;
esac
+# A tabulation character.
+tab=' '
+# A newline character.
+nl='
+'
+
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
@@ -102,6 +108,12 @@ if test "$depmode" = msvc7msys; then
depmode=msvc7
fi
+if test "$depmode" = xlc; then
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+ gccflag=-qmakedep=gcc,-MF
+ depmode=gcc
+fi
+
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
@@ -156,15 +168,14 @@ gcc)
## 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.
+## 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
+ tr ' ' "$nl" < "$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.
@@ -203,18 +214,15 @@ sgi)
# 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
+ # the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
- tr '
-' ' ' >> "$depfile"
+ tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
- tr ' ' '
-' < "$tmpdepfile" \
+ tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
@@ -226,10 +234,17 @@ sgi)
rm -f "$tmpdepfile"
;;
+xlc)
+ # 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
+ ;;
+
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
+ # 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|/[^/]*$|/|'`
@@ -259,12 +274,11 @@ aix)
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
- # Each line is of the form `foo.o: dependent.h'.
+ # 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:'.
+ # '$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"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -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
@@ -275,23 +289,26 @@ aix)
;;
icc)
- # Intel's C compiler understands `-MD -MF file'. However on
- # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+ # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+ # However on
+ # $CC -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:
+ # 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 \ :
+ # and will wrap long lines using '\':
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
-
+ # tcc 0.9.26 (FIXME still under development at the moment of writing)
+ # will emit a similar output, but also prepend the continuation lines
+ # with horizontal tabulation characters.
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
@@ -300,15 +317,21 @@ icc)
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 \'.
+ # 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"
+ # '$object: dependent.h' and one to simply 'dependent.h:'.
+ sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \
+ < "$tmpdepfile" > "$depfile"
+ sed '
+ s/[ '"$tab"'][ '"$tab"']*/ /g
+ s/^ *//
+ s/ *\\*$//
+ s/^[^:]*: *//
+ /^$/d
+ /:$/d
+ s/$/ :/
+ ' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
@@ -344,7 +367,7 @@ hp2)
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
+ # Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
@@ -359,9 +382,9 @@ hp2)
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'.
+ # 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.
+ # 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=
@@ -407,8 +430,7 @@ tru64)
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"
+ sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
@@ -443,11 +465,11 @@ msvc7)
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
-s/\(.*\)/ \1 \\/p
+s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
- s/.*/ /
+ s/.*/'"$tab"'/
G
p
}' >> "$depfile"
@@ -478,7 +500,7 @@ dashmstdout)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -498,15 +520,14 @@ dashmstdout)
done
test -z "$dashmflag" && dashmflag=-M
- # Require at least two characters before searching for `:'
+ # 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.
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
- sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
+ sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
- tr ' ' '
-' < "$tmpdepfile" | \
+ tr ' ' "$nl" < "$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"
@@ -562,8 +583,7 @@ makedepend)
# 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 ' ' '
-' | \
+ sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
## 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"
@@ -583,7 +603,7 @@ cpp)
shift
fi
- # Remove `-o $object'.
+ # Remove '-o $object'.
IFS=" "
for arg
do
@@ -652,8 +672,8 @@ msvisualcpp)
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::'"$tab"'\1 \\:p' >> "$depfile"
+ echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 4685ccd..282c550 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -207,7 +207,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 0c8bff1..2ae298e 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -69,8 +69,7 @@ EXTRA_HFILES = \
$(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
+ $(top_srcdir)/gst/realmedia/rtspreal.h
# Images to copy into HTML directory.
HTML_IMAGES =
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 20d33b5..6345cb5 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -186,7 +186,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
@@ -457,8 +459,7 @@ EXTRA_HFILES = \
$(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
+ $(top_srcdir)/gst/realmedia/rtspreal.h
# Images to copy into HTML directory.
diff --git a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
index cb475b2..80ca473 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-ugly-plugins-docs.sgml
@@ -31,7 +31,6 @@
<xi:include href="xml/element-rtspwms.xml" />
<xi:include href="xml/element-siddec.xml" />
<xi:include href="xml/element-twolamemp2enc.xml" />
- <xi:include href="xml/element-synaesthesia.xml" />
<xi:include href="xml/element-x264enc.xml" />
<xi:include href="xml/element-xingmux.xml" />
</chapter>
@@ -51,7 +50,6 @@
<xi:include href="xml/plugin-mpeg2dec.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>
diff --git a/docs/plugins/gst-plugins-ugly-plugins-sections.txt b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
index 2e5ce5d..37c4c2c 100644
--- a/docs/plugins/gst-plugins-ugly-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-ugly-plugins-sections.txt
@@ -217,20 +217,6 @@ 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-twolamemp2enc</FILE>
<TITLE>twolame</TITLE>
GstTwoLame
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 53b0df2..5f28f74 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp180400"></a>gst-plugins-ugly Elements</h2></div></div></div>
+<a name="idp3764480"></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>
@@ -66,13 +66,10 @@
<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>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-xingmux.html">xingmux</a></span><span class="refpurpose"></span>
</dt>
</dl></div>
</div>
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index 71e840d..d802a9a 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
-<a name="idp4162736"></a>gst-plugins-ugly Plugins</h2></div></div></div>
+<a name="idp277216"></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>
@@ -63,9 +63,6 @@
<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>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
index 447505b..313d3a4 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-a52dec.html
@@ -68,7 +68,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7841248"></a><h3>Element Information</h3>
+<a name="idp5740240"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -91,7 +91,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5861520"></a><h3>Element Pads</h3>
+<a name="idp6145440"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
index e05962e..c6551c4 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbdec.html
@@ -66,7 +66,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7062896"></a><h3>Element Information</h3>
+<a name="idp7778032"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -89,7 +89,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp9447728"></a><h3>Element Pads</h3>
+<a name="idp7830432"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
index c4dd3df..d5d8a55 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrnbenc.html
@@ -74,7 +74,7 @@ GstAmrnbEnc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp8720928"></a><h3>Element Information</h3>
+<a name="idp7293664"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -97,7 +97,7 @@ GstAmrnbEnc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp9318992"></a><h3>Element Pads</h3>
+<a name="idp5635104"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
index 10e17fa..3b0be58 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-amrwbdec.html
@@ -58,7 +58,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp9702592"></a><h3>Element Information</h3>
+<a name="idp8542768"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -81,7 +81,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp5678704"></a><h3>Element Pads</h3>
+<a name="idp8764960"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html b/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
index c9031db..893ec6d 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-cdiocddasrc.html
@@ -55,7 +55,7 @@
+----<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-gstaudiocdsrc.html#GstAudioCdSrc">GstAudioCdSrc</a>
+ +----GstAudioCdSrc
+----GstCdioCddaSrc
</pre>
</div>
@@ -76,7 +76,7 @@ GstCdioCddaSrc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6729088"></a><h3>Element Information</h3>
+<a name="idp6868336"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -99,7 +99,7 @@ GstCdioCddaSrc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp8760400"></a><h3>Element Pads</h3>
+<a name="idp8340928"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
index 49d957b..10f9650 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-lamemp3enc.html
@@ -79,7 +79,7 @@ GstLameMP3Enc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7539504"></a><h3>Element Information</h3>
+<a name="idp5678096"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -102,7 +102,7 @@ GstLameMP3Enc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp7705536"></a><h3>Element Pads</h3>
+<a name="idp5685504"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
index 1d6e10b..863a688 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-mad.html
@@ -67,7 +67,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5205312"></a><h3>Element Information</h3>
+<a name="idp7454528"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -90,7 +90,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp9743968"></a><h3>Element Pads</h3>
+<a name="idp7727856"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
index d69b603..f32f685 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-a52dec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9350160"></a><h2>Plugin Information</h2>
+<a name="idp5964432"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp2586240"></a><h2>Elements</h2>
+<a name="idp7698784"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
index 5fe8ca8..6f8f09e 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrnb.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp6184784"></a><h2>Plugin Information</h2>
+<a name="idp6268832"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5322048"></a><h2>Elements</h2>
+<a name="idp8473184"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
index fb9049e..8637d69 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-amrwbdec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp8163712"></a><h2>Plugin Information</h2>
+<a name="idp6254400"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp8246384"></a><h2>Elements</h2>
+<a name="idp8606208"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
index f654444..38057ce 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-asf.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9305104"></a><h2>Plugin Information</h2>
+<a name="idp9282240"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp6916128"></a><h2>Elements</h2>
+<a name="idp8270768"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
index 2ba2596..5c2c552 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-cdio.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9020912"></a><h2>Plugin Information</h2>
+<a name="idp6502448"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5701600"></a><h2>Elements</h2>
+<a name="idp7288624"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
index 679c0eb..2477f01 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdlpcmdec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp5307760"></a><h2>Plugin Information</h2>
+<a name="idp8581344"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp7999392"></a><h2>Elements</h2>
+<a name="idp9026272"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
index 3062233..c5231e0 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdread.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9584752"></a><h2>Plugin Information</h2>
+<a name="idp6827824"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5835824"></a><h2>Elements</h2>
+<a name="idp6141328"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
index c639c2e..bdfd477 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-dvdsub.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp5617312"></a><h2>Plugin Information</h2>
+<a name="idp9045472"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5561216"></a><h2>Elements</h2>
+<a name="idp5300928"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
index 4bfd579..e842247 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-lame.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9267216"></a><h2>Plugin Information</h2>
+<a name="idp5254288"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp9735696"></a><h2>Elements</h2>
+<a name="idp7978128"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
index acce4e7..fb633dd 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mad.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp7965408"></a><h2>Plugin Information</h2>
+<a name="idp5028768"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp8174208"></a><h2>Elements</h2>
+<a name="idp8319312"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
index c6200a6..37bc9a4 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-mpeg2dec.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp7595152"></a><h2>Plugin Information</h2>
+<a name="idp6934800"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp8858912"></a><h2>Elements</h2>
+<a name="idp4982016"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
index 60549be..09e7e69 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-realmedia.html
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp6162288"></a><h2>Plugin Information</h2>
+<a name="idp8539504"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp9386560"></a><h2>Elements</h2>
+<a name="idp7252192"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
index 3c8a88b..e778e45 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-siddec.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 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">
+<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>
@@ -17,7 +17,7 @@
<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 1.0 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>
+<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-siddec"></a><div class="titlepage"></div>
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp9556560"></a><h2>Plugin Information</h2>
+<a name="idp5620064"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp7474720"></a><h2>Elements</h2>
+<a name="idp8746224"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html
deleted file mode 100644
index a4b155b..0000000
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-synaesthesia.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!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 1.0 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 1.0 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="idp7459152"></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="idp8694768"></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
index 4fcfdf1..142e240 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-twolame.html
@@ -6,14 +6,14 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 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="prev" href="gst-plugins-ugly-plugins-plugin-siddec.html" title="siddec">
<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="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 1.0 Plugins Reference Manual</th>
@@ -29,7 +29,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp10546320"></a><h2>Plugin Information</h2>
+<a name="idp5749568"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -57,7 +57,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5771168"></a><h2>Elements</h2>
+<a name="idp6065472"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
index 47012d6..3716288 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-plugin-x264.html
@@ -28,7 +28,7 @@
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="idp5416432"></a><h2>Plugin Information</h2>
+<a name="idp5204016"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -56,7 +56,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="idp5724400"></a><h2>Elements</h2>
+<a name="idp5784544"></a><h2>Elements</h2>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
index d39084b..6c40fca 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rademux.html
@@ -60,7 +60,7 @@ Demuxes/parses a RealAudio (.ra) file or stream into compressed audio.
<p>
</p>
<div class="refsect2">
-<a name="idp5629056"></a><h3>Example launch line</h3>
+<a name="idp4983856"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -94,7 +94,7 @@ Last reviewed on 2006-10-24 (0.10.5)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7830400"></a><h3>Element Information</h3>
+<a name="idp6150640"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -117,7 +117,7 @@ Last reviewed on 2006-10-24 (0.10.5)
</div>
<hr>
<div class="refsect2">
-<a name="idp7006848"></a><h3>Element Pads</h3>
+<a name="idp5940544"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html b/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
index 116ab07..73f01ed 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rdtmanager.html
@@ -83,7 +83,7 @@ Last reviewed on 2006-06-20 (0.10.4)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp7275136"></a><h3>Element Information</h3>
+<a name="idp9768368"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -106,7 +106,7 @@ Last reviewed on 2006-06-20 (0.10.4)
</div>
<hr>
<div class="refsect2">
-<a name="idp6700912"></a><h3>Element Pads</h3>
+<a name="idp5737536"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html b/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
index ffe4c30..9985c5b 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rmdemux.html
@@ -57,7 +57,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp6843856"></a><h3>Element Information</h3>
+<a name="idp6674240"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -80,7 +80,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp9234736"></a><h3>Element Pads</h3>
+<a name="idp6920000"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
index c251a86..fd6e454 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspreal.html
@@ -71,7 +71,7 @@ Last reviewed on 2007-07-25 (0.10.14)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp5994752"></a><h3>Element Information</h3>
+<a name="idp5547776"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -94,7 +94,7 @@ Last reviewed on 2007-07-25 (0.10.14)
</div>
<hr>
<div class="refsect2">
-<a name="idp6140752"></a><h3>Element Pads</h3>
+<a name="idp9675280"></a><h3>Element Pads</h3>
</div>
</div>
<p>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
index 6bb8774..d283ec5 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-rtspwms.html
@@ -71,7 +71,7 @@ Last reviewed on 2007-07-25 (0.10.14)
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp2567296"></a><h3>Element Information</h3>
+<a name="idp6239648"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -94,7 +94,7 @@ Last reviewed on 2007-07-25 (0.10.14)
</div>
<hr>
<div class="refsect2">
-<a name="idp8773856"></a><h3>Element Pads</h3>
+<a name="idp8966144"></a><h3>Element Pads</h3>
</div>
</div>
<p>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html b/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
index 17ee6ff..565aab5 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-siddec.html
@@ -73,7 +73,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp10167424"></a><h3>Element Information</h3>
+<a name="idp9665392"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -96,7 +96,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="idp10174880"></a><h3>Element Pads</h3>
+<a name="idp9672848"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html b/docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html
deleted file mode 100644
index 7ba4aa1..0000000
--- a/docs/plugins/html/gst-plugins-ugly-plugins-synaesthesia.html
+++ /dev/null
@@ -1,190 +0,0 @@
-<!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 1.0 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 1.0 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="idp8624816"></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="idp2533280"></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="idp7616672"></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;
- guint outsize;
- GstBufferPool *pool;
-
- /* Audio state */
- gint sample_rate;
- gint rate;
- gint channels;
-
- /* 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
index 8e51973..bf43565 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-twolame.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 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">
+<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>
@@ -18,7 +18,7 @@
<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 1.0 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>
+<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-twolame.synopsis" class="shortcut">Top</a>
@@ -88,7 +88,7 @@ GstTwoLame implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp10266640"></a><h3>Element Information</h3>
+<a name="idp10286128"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -111,7 +111,7 @@ GstTwoLame implements
</div>
<hr>
<div class="refsect2">
-<a name="idp10274048"></a><h3>Element Pads</h3>
+<a name="idp10293536"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html b/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
index caeaec9..73c4107 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-x264enc.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GStreamer Ugly Plugins 1.0 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="prev" href="gst-plugins-ugly-plugins-twolame.html" title="twolame">
<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">
@@ -14,7 +14,7 @@
<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="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 1.0 Plugins Reference Manual</th>
@@ -111,7 +111,7 @@ GstX264Enc implements
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="idp11097680"></a><h3>Element Information</h3>
+<a name="idp10451408"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
@@ -134,7 +134,7 @@ GstX264Enc implements
</div>
<hr>
<div class="refsect2">
-<a name="idp11105088"></a><h3>Element Pads</h3>
+<a name="idp10458816"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html b/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
index a2cef55..cb3672a 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
+++ b/docs/plugins/html/gst-plugins-ugly-plugins-xingmux.html
@@ -33,7 +33,7 @@
<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>
+<p>xingmux</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
@@ -65,7 +65,7 @@ This element will remove any existing Xing, LAME or VBRI headers from the beginn
<p>
</p>
<div class="refsect2">
-<a name="idp6017184"></a><h3>Example launch line</h3>
+<a name="idp8175216"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -84,77 +84,6 @@ gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc o
</div>
<p>
</p>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="idp8782336"></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>
- xingmux
- </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="idp6650256"></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>
diff --git a/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2 b/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2
index 88e2b61..2ee5e25 100644
--- a/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2
+++ b/docs/plugins/html/gst-plugins-ugly-plugins.devhelp2
@@ -17,7 +17,6 @@
<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>
@@ -35,35 +34,34 @@
<sub name="mpeg2dec" link="gst-plugins-ugly-plugins-plugin-mpeg2dec.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#idp7841248"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-a52dec.html#idp5861520"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-a52dec.html#idp5740240"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-a52dec.html#idp6145440"/>
<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#idp7062896"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbdec.html#idp9447728"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrnbdec.html#idp7778032"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbdec.html#idp7830432"/>
<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#idp8720928"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbenc.html#idp9318992"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrnbenc.html#idp7293664"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrnbenc.html#idp5635104"/>
<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#idp9702592"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrwbdec.html#idp5678704"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-amrwbdec.html#idp8542768"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-amrwbdec.html#idp8764960"/>
<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#idp6729088"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-cdiocddasrc.html#idp8760400"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-cdiocddasrc.html#idp6868336"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-cdiocddasrc.html#idp8340928"/>
<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-lamemp3enc.html#idp7539504"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-lamemp3enc.html#idp7705536"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-lamemp3enc.html#idp5678096"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-lamemp3enc.html#idp5685504"/>
<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"/>
@@ -71,20 +69,20 @@
<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#idp5205312"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-mad.html#idp9743968"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-mad.html#idp7454528"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-mad.html#idp7727856"/>
<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-rademux.html#idp5629056"/>
- <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rademux.html#idp7830400"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rademux.html#idp7006848"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-rademux.html#idp4983856"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rademux.html#idp6150640"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rademux.html#idp5940544"/>
<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#idp6843856"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rmdemux.html#idp9234736"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rmdemux.html#idp6674240"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rmdemux.html#idp6920000"/>
<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#idp7275136"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rdtmanager.html#idp6700912"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rdtmanager.html#idp9768368"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rdtmanager.html#idp5737536"/>
<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"/>
@@ -92,14 +90,14 @@
<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#idp5994752"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspreal.html#idp6140752"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rtspreal.html#idp5547776"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspreal.html#idp9675280"/>
<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#idp2567296"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspwms.html#idp8773856"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-rtspwms.html#idp6239648"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-rtspwms.html#idp8966144"/>
<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#idp10167424"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-siddec.html#idp10174880"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-siddec.html#idp9665392"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-siddec.html#idp9672848"/>
<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"/>
@@ -110,8 +108,8 @@
<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#idp10266640"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-twolame.html#idp10274048"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-twolame.html#idp10286128"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-twolame.html#idp10293536"/>
<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"/>
@@ -128,12 +126,8 @@
<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#idp8624816"/>
- <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-synaesthesia.html#idp2533280"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-synaesthesia.html#idp7616672"/>
- <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#idp11097680"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-x264enc.html#idp11105088"/>
+ <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-x264enc.html#idp10451408"/>
+ <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-x264enc.html#idp10458816"/>
<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"/>
@@ -174,9 +168,7 @@
<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#idp6017184"/>
- <keyword type="" name="Element Information" link="gst-plugins-ugly-plugins-xingmux.html#idp8782336"/>
- <keyword type="" name="Element Pads" link="gst-plugins-ugly-plugins-xingmux.html#idp6650256"/>
+ <keyword type="" name="Example launch line" link="gst-plugins-ugly-plugins-xingmux.html#idp8175216"/>
<keyword type="struct" name="struct GstXingMux" link="gst-plugins-ugly-plugins-xingmux.html#GstXingMux-struct"/>
</functions>
</book>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 88c2f94..9149b00 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Ugly Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
<div><p class="releaseinfo">
- for GStreamer Ugly Plugins 1.0 (0.11.92)
+ for GStreamer Ugly Plugins 1.0 (0.11.93)
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>
@@ -68,13 +68,10 @@
<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>
+<span class="refentrytitle"><a href="gst-plugins-ugly-plugins-xingmux.html">xingmux</a></span><span class="refpurpose"></span>
</dt>
</dl></dd>
<dt><span class="chapter"><a href="ch02.html">gst-plugins-ugly Plugins</a></span></dt>
@@ -119,9 +116,6 @@
<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>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 260fea2..bd630b0 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -168,12 +168,6 @@
<ANCHOR id="GstTwoLame--vbr" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr">
<ANCHOR id="GstTwoLame--vbr-level" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-level">
<ANCHOR id="GstTwoLame--vbr-max-bitrate" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-twolame.html#GstTwoLame--vbr-max-bitrate">
-<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-synaesthesia.html">
-<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.synopsis" href="gst-plugins-ugly-plugins-1.0/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-1.0/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-1.0/gst-plugins-ugly-plugins-synaesthesia.html#gst-plugins-ugly-plugins-synaesthesia.details">
-<ANCHOR id="GstSynaesthesia" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-synaesthesia.html#GstSynaesthesia">
-<ANCHOR id="gst-plugins-ugly-plugins-synaesthesia.see-also" href="gst-plugins-ugly-plugins-1.0/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-1.0/gst-plugins-ugly-plugins-x264enc.html">
<ANCHOR id="gst-plugins-ugly-plugins-x264enc.synopsis" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-x264enc.html#gst-plugins-ugly-plugins-x264enc.synopsis">
<ANCHOR id="GstX264Enc" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-x264enc.html#GstX264Enc">
@@ -256,8 +250,6 @@
<ANCHOR id="plugin-realmedia" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-realmedia.html#plugin-realmedia">
<ANCHOR id="gst-plugins-ugly-plugins-plugin-siddec" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-siddec.html">
<ANCHOR id="plugin-siddec" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-siddec.html#plugin-siddec">
-<ANCHOR id="gst-plugins-ugly-plugins-plugin-synaesthesia" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-synaesthesia.html">
-<ANCHOR id="plugin-synaesthesia" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-synaesthesia.html#plugin-synaesthesia">
<ANCHOR id="gst-plugins-ugly-plugins-plugin-twolame" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-twolame.html">
<ANCHOR id="plugin-twolame" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-twolame.html#plugin-twolame">
<ANCHOR id="gst-plugins-ugly-plugins-plugin-x264" href="gst-plugins-ugly-plugins-1.0/gst-plugins-ugly-plugins-plugin-x264.html">
diff --git a/docs/plugins/inspect/plugin-synaesthesia.xml b/docs/plugins/inspect/plugin-synaesthesia.xml
deleted file mode 100644
index a3b2ac2..0000000
--- a/docs/plugins/inspect/plugin-synaesthesia.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<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-xingmux.xml b/docs/plugins/inspect/plugin-xingmux.xml
deleted file mode 100644
index 3ccaecf..0000000
--- a/docs/plugins/inspect/plugin-xingmux.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<plugin>
- <name>xingmux</name>
- <description>Add XING tags to mpeg audio files</description>
- <filename>../../gst/xingmux/.libs/libgstxingmux.so</filename>
- <basename>libgstxingmux.so</basename>
- <version>0.11.92</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>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/ext/Makefile.in b/ext/Makefile.in
index e599333..ae7e4cf 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -212,7 +212,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/a52dec/Makefile.in b/ext/a52dec/Makefile.in
index 30e0a78..48ef59f 100644
--- a/ext/a52dec/Makefile.in
+++ b/ext/a52dec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/a52dec/gsta52dec.c b/ext/a52dec/gsta52dec.c
index dfcb480..9693e13 100644
--- a/ext/a52dec/gsta52dec.c
+++ b/ext/a52dec/gsta52dec.c
@@ -460,7 +460,7 @@ gst_a52dec_update_streaminfo (GstA52Dec * a52dec)
gst_audio_decoder_merge_tags (GST_AUDIO_DECODER (a52dec), taglist,
GST_TAG_MERGE_REPLACE);
- gst_tag_list_free (taglist);
+ gst_tag_list_unref (taglist);
}
static GstFlowReturn
diff --git a/ext/amrnb/Makefile.in b/ext/amrnb/Makefile.in
index ae6013a..934d3a0 100644
--- a/ext/amrnb/Makefile.in
+++ b/ext/amrnb/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -238,7 +238,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/amrwbdec/Makefile.in b/ext/amrwbdec/Makefile.in
index 20efb8e..adc413d 100644
--- a/ext/amrwbdec/Makefile.in
+++ b/ext/amrwbdec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -236,7 +236,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/cdio/Makefile.in b/ext/cdio/Makefile.in
index 7590b93..cce73c0 100644
--- a/ext/cdio/Makefile.in
+++ b/ext/cdio/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/dvdread/Makefile.in b/ext/dvdread/Makefile.in
index 76d3760..237efd3 100644
--- a/ext/dvdread/Makefile.in
+++ b/ext/dvdread/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -234,7 +234,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/dvdread/dvdreadsrc.c b/ext/dvdread/dvdreadsrc.c
index 7140983..ca0bf55 100644
--- a/ext/dvdread/dvdreadsrc.c
+++ b/ext/dvdread/dvdreadsrc.c
@@ -1550,35 +1550,39 @@ 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_FLAG_STARTED));
- GST_OBJECT_UNLOCK (src);
-
- if (!started) {
- GST_DEBUG_OBJECT (src, "query failed: not started");
- return FALSE;
- }
+ GST_LOG_OBJECT (src, "handling %s query", GST_QUERY_TYPE_NAME (query));
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_DURATION:
GST_OBJECT_LOCK (src);
- res = gst_dvd_read_src_do_duration_query (src, query);
+ if (GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_FLAG_STARTED)) {
+ res = gst_dvd_read_src_do_duration_query (src, query);
+ } else {
+ GST_DEBUG_OBJECT (src, "query failed: not started");
+ res = FALSE;
+ }
GST_OBJECT_UNLOCK (src);
break;
case GST_QUERY_POSITION:
GST_OBJECT_LOCK (src);
- res = gst_dvd_read_src_do_position_query (src, query);
+ if (GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_FLAG_STARTED)) {
+ res = gst_dvd_read_src_do_position_query (src, query);
+ } else {
+ GST_DEBUG_OBJECT (src, "query failed: not started");
+ res = FALSE;
+ }
GST_OBJECT_UNLOCK (src);
break;
case GST_QUERY_CONVERT:
GST_OBJECT_LOCK (src);
- res = gst_dvd_read_src_do_convert_query (src, query);
+ if (GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_FLAG_STARTED)) {
+ res = gst_dvd_read_src_do_convert_query (src, query);
+ } else {
+ GST_DEBUG_OBJECT (src, "query failed: not started");
+ res = FALSE;
+ }
GST_OBJECT_UNLOCK (src);
break;
default:
@@ -1770,7 +1774,7 @@ plugin_init (GstPlugin * plugin)
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
#endif /* ENABLE_NLS */
- if (!gst_element_register (plugin, "dvdreadsrc", GST_RANK_SECONDARY,
+ if (!gst_element_register (plugin, "dvdreadsrc", GST_RANK_NONE,
GST_TYPE_DVD_READ_SRC)) {
return FALSE;
}
diff --git a/ext/lame/Makefile.in b/ext/lame/Makefile.in
index 61ee885..f380e41 100644
--- a/ext/lame/Makefile.in
+++ b/ext/lame/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -236,7 +236,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/lame/gstlamemp3enc.c b/ext/lame/gstlamemp3enc.c
index c2b0871..4955495 100644
--- a/ext/lame/gstlamemp3enc.c
+++ b/ext/lame/gstlamemp3enc.c
@@ -375,7 +375,7 @@ gst_lamemp3enc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
if (tags) {
gst_audio_encoder_merge_tags (enc, tags, GST_TAG_MERGE_REPLACE);
- gst_tag_list_free (tags);
+ gst_tag_list_unref (tags);
}
return TRUE;
@@ -383,7 +383,7 @@ gst_lamemp3enc_set_format (GstAudioEncoder * enc, GstAudioInfo * info)
zero_output_rate:
{
if (tags)
- gst_tag_list_free (tags);
+ gst_tag_list_unref (tags);
GST_ELEMENT_ERROR (lame, LIBRARY, SETTINGS, (NULL),
("LAME mp3 audio decided on a zero sample rate"));
return FALSE;
@@ -819,7 +819,7 @@ gst_lamemp3enc_setup (GstLameMP3Enc * lame, GstTagList ** tags)
if ((command) < 0) { \
GST_ERROR_OBJECT (lame, "setup failed: " G_STRINGIFY (command)); \
if (*tags) { \
- gst_tag_list_free (*tags); \
+ gst_tag_list_unref (*tags); \
*tags = NULL; \
} \
return FALSE; \
diff --git a/ext/mad/Makefile.in b/ext/mad/Makefile.in
index 6881481..697f993 100644
--- a/ext/mad/Makefile.in
+++ b/ext/mad/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/mpeg2dec/Makefile.in b/ext/mpeg2dec/Makefile.in
index f5a3d4e..e186135 100644
--- a/ext/mpeg2dec/Makefile.in
+++ b/ext/mpeg2dec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -234,7 +234,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/mpeg2dec/gstmpeg2dec.c b/ext/mpeg2dec/gstmpeg2dec.c
index c1f93ee..90ddf22 100644
--- a/ext/mpeg2dec/gstmpeg2dec.c
+++ b/ext/mpeg2dec/gstmpeg2dec.c
@@ -26,6 +26,9 @@
#include "gstmpeg2dec.h"
+#include <gst/video/gstvideometa.h>
+#include <gst/video/gstvideopool.h>
+
/* 16byte-aligns a buffer for libmpeg2 */
#define ALIGN_16(p) ((void *)(((uintptr_t)(p) + 15) & ~((uintptr_t)15)))
@@ -42,24 +45,15 @@ typedef gint mpeg2_state_t;
#define STATE_BUFFER 0
#endif
-GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
GST_DEBUG_CATEGORY_STATIC (mpeg2dec_debug);
#define GST_CAT_DEFAULT (mpeg2dec_debug)
+GST_DEBUG_CATEGORY_EXTERN (GST_CAT_PERFORMANCE);
/* 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,
@@ -73,112 +67,73 @@ GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw, "
- "format = (string) { I420, Y42B, Y444 }, "
+ "format = (string) { YV12, I420, Y42B, Y444 }, "
"width = (int) [ 16, 4096 ], "
"height = (int) [ 16, 4096 ], "
"framerate = (fraction) [ 0/1, 2147483647/1 ]")
);
-static void gst_mpeg2dec_finalize (GObject * object);
-static void gst_mpeg2dec_reset (GstMpeg2dec * mpeg2dec);
-
-static gboolean gst_mpeg2dec_src_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
-static GstStateChangeReturn gst_mpeg2dec_change_state (GstElement * element,
- GstStateChange transition);
-
-static gboolean gst_mpeg2dec_sink_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
-static gboolean gst_mpeg2dec_setcaps (GstPad * pad, GstCaps * caps);
-static GstFlowReturn gst_mpeg2dec_chain (GstPad * pad, GstObject * parent,
- GstBuffer * buf);
-
-static void clear_buffers (GstMpeg2dec * mpeg2dec);
-
-//static gboolean gst_mpeg2dec_sink_query (GstPad * pad, GstObject * parent, 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 gboolean gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf,
- GstVideoFrame * frame);
+#define gst_mpeg2dec_parent_class parent_class
+G_DEFINE_TYPE (GstMpeg2dec, gst_mpeg2dec, GST_TYPE_VIDEO_DECODER);
-/*static guint gst_mpeg2dec_signals[LAST_SIGNAL] = { 0 };*/
+static void gst_mpeg2dec_finalize (GObject * object);
-#define gst_mpeg2dec_parent_class parent_class
-G_DEFINE_TYPE (GstMpeg2dec, gst_mpeg2dec, GST_TYPE_ELEMENT);
+/* GstVideoDecoder base class method */
+static gboolean gst_mpeg2dec_open (GstVideoDecoder * decoder);
+static gboolean gst_mpeg2dec_close (GstVideoDecoder * decoder);
+static gboolean gst_mpeg2dec_start (GstVideoDecoder * decoder);
+static gboolean gst_mpeg2dec_stop (GstVideoDecoder * decoder);
+static gboolean gst_mpeg2dec_set_format (GstVideoDecoder * decoder,
+ GstVideoCodecState * state);
+static gboolean gst_mpeg2dec_reset (GstVideoDecoder * decoder, gboolean hard);
+static GstFlowReturn gst_mpeg2dec_finish (GstVideoDecoder * decoder);
+static GstFlowReturn gst_mpeg2dec_handle_frame (GstVideoDecoder * decoder,
+ GstVideoCodecFrame * frame);
+static gboolean gst_mpeg2dec_decide_allocation (GstVideoDecoder * decoder,
+ GstQuery * query);
+
+static void gst_mpeg2dec_clear_buffers (GstMpeg2dec * mpeg2dec);
+static gboolean gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec,
+ GstVideoCodecFrame * in_frame, GstVideoFrame * in_vframe);
static void
gst_mpeg2dec_class_init (GstMpeg2decClass * klass)
{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+ GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
gobject_class->finalize = gst_mpeg2dec_finalize;
- gst_element_class_add_pad_template (gstelement_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&sink_template_factory));
-#ifdef enable_user_data
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&user_data_template_factory));
-#endif
- gst_element_class_set_static_metadata (gstelement_class,
+ gst_element_class_set_static_metadata (element_class,
"mpeg1 and mpeg2 video decoder", "Codec/Decoder/Video",
"Uses libmpeg2 to decode MPEG video streams",
- "Wim Taymans <wim.taymans@gmail.com>");
-
- gstelement_class->change_state = gst_mpeg2dec_change_state;
+ "Wim Taymans <wim.taymans@chello.be>");
+
+ video_decoder_class->open = GST_DEBUG_FUNCPTR (gst_mpeg2dec_open);
+ video_decoder_class->close = GST_DEBUG_FUNCPTR (gst_mpeg2dec_close);
+ video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_mpeg2dec_start);
+ video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_mpeg2dec_stop);
+ video_decoder_class->reset = GST_DEBUG_FUNCPTR (gst_mpeg2dec_reset);
+ video_decoder_class->set_format = GST_DEBUG_FUNCPTR (gst_mpeg2dec_set_format);
+ video_decoder_class->handle_frame =
+ GST_DEBUG_FUNCPTR (gst_mpeg2dec_handle_frame);
+ video_decoder_class->finish = GST_DEBUG_FUNCPTR (gst_mpeg2dec_finish);
+ video_decoder_class->decide_allocation =
+ GST_DEBUG_FUNCPTR (gst_mpeg2dec_decide_allocation);
GST_DEBUG_CATEGORY_INIT (mpeg2dec_debug, "mpeg2dec", 0,
- "MPEG2 decoder element");
+ "MPEG-2 Video Decoder");
}
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_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));
-#if 0
- gst_pad_set_query_function (mpeg2dec->srcpad,
- GST_DEBUG_FUNCPTR (gst_mpeg2dec_src_query));
-#endif
- 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;
+ gst_video_decoder_set_packetized (GST_VIDEO_DECODER (mpeg2dec), TRUE);
/* initialize the mpeg2dec acceleration */
}
@@ -193,75 +148,213 @@ gst_mpeg2dec_finalize (GObject * object)
mpeg2_close (mpeg2dec->decoder);
mpeg2dec->decoder = NULL;
}
- clear_buffers (mpeg2dec);
+
+ gst_mpeg2dec_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)
+static gboolean
+gst_mpeg2dec_open (GstVideoDecoder * decoder)
+{
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+
+ mpeg2_accel (MPEG2_ACCEL_DETECT);
+ if ((mpeg2dec->decoder = mpeg2_init ()) == NULL)
+ return FALSE;
+ mpeg2dec->info = mpeg2_info (mpeg2dec->decoder);
+
+ return TRUE;
+}
+
+static gboolean
+gst_mpeg2dec_close (GstVideoDecoder * decoder)
+{
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+
+ if (mpeg2dec->decoder) {
+ mpeg2_close (mpeg2dec->decoder);
+ mpeg2dec->decoder = NULL;
+ mpeg2dec->info = NULL;
+ }
+ gst_mpeg2dec_clear_buffers (mpeg2dec);
+
+ return TRUE;
+}
+
+static gboolean
+gst_mpeg2dec_start (GstVideoDecoder * decoder)
+{
+ return gst_mpeg2dec_reset (decoder, TRUE);
+}
+
+static gboolean
+gst_mpeg2dec_stop (GstVideoDecoder * decoder)
+{
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+
+ if (mpeg2dec->input_state) {
+ gst_video_codec_state_unref (mpeg2dec->input_state);
+ mpeg2dec->input_state = NULL;
+ }
+ return gst_mpeg2dec_reset (decoder, TRUE);
+}
+
+static gboolean
+gst_mpeg2dec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state)
+{
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+
+ /* Save input state to be used as reference for output state */
+ if (mpeg2dec->input_state)
+ gst_video_codec_state_unref (mpeg2dec->input_state);
+ mpeg2dec->input_state = gst_video_codec_state_ref (state);
+
+ return TRUE;
+}
+
+static gboolean
+gst_mpeg2dec_reset (GstVideoDecoder * decoder, gboolean hard)
{
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+
+ GST_DEBUG_OBJECT (mpeg2dec, "%s", hard ? "hard" : "soft");
+
/* reset the initial video state */
- gst_video_info_init (&mpeg2dec->vinfo);
- 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);
+ mpeg2_reset (mpeg2dec->decoder, hard);
+ mpeg2_skip (mpeg2dec->decoder, 1);
+
+ gst_mpeg2dec_clear_buffers (mpeg2dec);
+
+ return TRUE;
}
-static void
-gst_mpeg2dec_qos_reset (GstMpeg2dec * mpeg2dec)
+static GstFlowReturn
+gst_mpeg2dec_finish (GstVideoDecoder * decoder)
+{
+ return GST_FLOW_OK;
+}
+
+static gboolean
+gst_mpeg2dec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
{
- GST_OBJECT_LOCK (mpeg2dec);
- mpeg2dec->proportion = 1.0;
- mpeg2dec->earliest_time = -1;
- mpeg2dec->dropped = 0;
- mpeg2dec->processed = 0;
- GST_OBJECT_UNLOCK (mpeg2dec);
+ GstMpeg2dec *dec = GST_MPEG2DEC (decoder);
+ GstVideoCodecState *state;
+ GstBufferPool *pool;
+ guint size, min, max;
+ GstStructure *config;
+ GstAllocator *allocator;
+ GstAllocationParams params;
+ gboolean update_allocator;
+
+ /* Set allocation parameters to guarantee 16-byte aligned output buffers */
+ if (gst_query_get_n_allocation_params (query) > 0) {
+ gst_query_parse_nth_allocation_param (query, 0, &allocator, &params);
+ update_allocator = TRUE;
+ } else {
+ allocator = NULL;
+ gst_allocation_params_init (&params);
+ update_allocator = FALSE;
+ }
+
+ params.align = MAX (params.align, 15);
+
+ if (update_allocator)
+ gst_query_set_nth_allocation_param (query, 0, allocator, &params);
+ else
+ gst_query_add_allocation_param (query, allocator, &params);
+ if (allocator)
+ gst_object_unref (allocator);
+
+ /* Now chain up to the parent class to guarantee that we can
+ * get a buffer pool from the query */
+ if (!GST_VIDEO_DECODER_CLASS (parent_class)->decide_allocation (decoder,
+ query))
+ return FALSE;
+
+ state = gst_video_decoder_get_output_state (decoder);
+
+ gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
+
+ dec->has_cropping = FALSE;
+ config = gst_buffer_pool_get_config (pool);
+ if (gst_query_find_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL)) {
+ gst_buffer_pool_config_add_option (config,
+ GST_BUFFER_POOL_OPTION_VIDEO_META);
+ dec->has_cropping =
+ gst_query_find_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE,
+ NULL);
+ }
+
+ if (dec->has_cropping) {
+ GstCaps *caps;
+
+ /* Calculate uncropped size */
+ size = MAX (size, dec->decoded_info.size);
+ caps = gst_video_info_to_caps (&dec->decoded_info);
+ gst_buffer_pool_config_set_params (config, caps, size, min, max);
+ gst_caps_unref (caps);
+ }
+
+ gst_buffer_pool_set_config (pool, config);
+
+ gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
+
+ gst_object_unref (pool);
+ gst_video_codec_state_unref (state);
+
+ return TRUE;
}
static GstFlowReturn
-gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf,
- GstVideoFrame * frame)
+gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstVideoCodecFrame * in_frame,
+ GstVideoFrame * input_vframe)
{
+ GstVideoCodecState *state;
+ GstVideoInfo *info;
+ GstVideoInfo *dinfo;
+ guint c, n_planes;
+ GstVideoFrame output_frame;
GstFlowReturn ret;
- GstBuffer *outbuf;
- GstVideoFrame outframe;
- guint i, n_planes;
- ret = gst_buffer_pool_acquire_buffer (dec->pool, &outbuf, NULL);
- if (G_UNLIKELY (ret != GST_FLOW_OK))
- return ret;;
+ state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (dec));
+ info = &state->info;
+ dinfo = &dec->decoded_info;
GST_CAT_LOG_OBJECT (GST_CAT_PERFORMANCE, dec,
- "cropping input buffer to output buffer");
-
- gst_video_frame_map (&outframe, &dec->cinfo, outbuf, GST_MAP_WRITE);
+ "Copying input buffer %ux%u (%u) to output buffer "
+ "%ux%u (%u)", dinfo->width, dinfo->height,
+ dinfo->size, info->width, info->height, info->size);
+
+ ret =
+ gst_video_decoder_allocate_output_frame (GST_VIDEO_DECODER (dec),
+ in_frame);
+ if (ret != GST_FLOW_OK)
+ goto beach;
- n_planes = GST_VIDEO_FRAME_N_PLANES (&outframe);
+ if (!gst_video_frame_map (&output_frame, info, in_frame->output_buffer,
+ GST_MAP_WRITE))
+ goto map_fail;
- for (i = 0; i < n_planes; i++) {
+ n_planes = GST_VIDEO_FRAME_N_PLANES (&output_frame);
+ for (c = 0; c < n_planes; c++) {
guint w, h, j;
guint8 *sp, *dp;
gint ss, ds;
- sp = GST_VIDEO_FRAME_PLANE_DATA (frame, i);
- dp = GST_VIDEO_FRAME_PLANE_DATA (&outframe, i);
+ sp = GST_VIDEO_FRAME_PLANE_DATA (input_vframe, c);
+ dp = GST_VIDEO_FRAME_PLANE_DATA (&output_frame, c);
- ss = GST_VIDEO_FRAME_PLANE_STRIDE (frame, i);
- ds = GST_VIDEO_FRAME_PLANE_STRIDE (&outframe, i);
+ ss = GST_VIDEO_FRAME_PLANE_STRIDE (input_vframe, c);
+ ds = GST_VIDEO_FRAME_PLANE_STRIDE (&output_frame, c);
w = MIN (ABS (ss), ABS (ds));
- h = GST_VIDEO_FRAME_COMP_HEIGHT (&outframe, i);
+ h = GST_VIDEO_FRAME_COMP_HEIGHT (&output_frame, c);
- GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "copy plane %u, w:%u h:%u ", i, w, h);
+ GST_CAT_DEBUG (GST_CAT_PERFORMANCE, "copy plane %u, w:%u h:%u ", c, w, h);
for (j = 0; j < h; j++) {
memcpy (dp, sp, w);
@@ -269,94 +362,192 @@ gst_mpeg2dec_crop_buffer (GstMpeg2dec * dec, GstBuffer ** buf,
sp += ss;
}
}
- gst_video_frame_unmap (&outframe);
- gst_buffer_copy_into (outbuf, *buf,
- GST_BUFFER_COPY_TIMESTAMPS | GST_BUFFER_COPY_FLAGS, 0, -1);
+ gst_video_frame_unmap (&output_frame);
- gst_buffer_unref (*buf);
- *buf = outbuf;
+ GST_BUFFER_FLAGS (in_frame->output_buffer) =
+ GST_BUFFER_FLAGS (input_vframe->buffer);
- return GST_FLOW_OK;
+beach:
+ gst_video_codec_state_unref (state);
+
+ return ret;
+
+map_fail:
+ {
+ GST_ERROR_OBJECT (dec, "Failed to map output frame");
+ gst_video_codec_state_unref (state);
+ return GST_FLOW_ERROR;
+ }
+}
+
+static void
+frame_user_data_destroy_notify (GstBuffer * buf)
+{
+ GST_DEBUG ("Releasing buffer %p", buf);
+ if (buf)
+ gst_buffer_unref (buf);
}
static GstFlowReturn
-gst_mpeg2dec_negotiate_pool (GstMpeg2dec * dec, GstCaps * caps,
- GstVideoInfo * vinfo, GstVideoInfo * cinfo)
+gst_mpeg2dec_alloc_sized_buf (GstMpeg2dec * mpeg2dec, guint size,
+ GstVideoCodecFrame * frame, GstBuffer ** buffer)
{
- GstQuery *query;
- GstBufferPool *pool;
- guint size, min, max;
- GstStructure *config;
- GstCaps *pcaps;
+ GstFlowReturn ret = GST_FLOW_OK;
+ GstVideoCodecState *state;
- /* find a pool for the negotiated caps now */
- query = gst_query_new_allocation (caps, TRUE);
+ state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (mpeg2dec));
- if (gst_pad_peer_query (dec->srcpad, query)) {
- /* check if downstream supports cropping */
- dec->has_cropping =
- gst_query_has_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE);
+ if (!mpeg2dec->need_cropping || mpeg2dec->has_cropping) {
+ ret =
+ gst_video_decoder_allocate_output_frame (GST_VIDEO_DECODER (mpeg2dec),
+ frame);
+ *buffer = frame->output_buffer;
} else {
- /* use the query default then */
- GST_DEBUG_OBJECT (dec, "didn't get downstream ALLOCATION hints");
- dec->has_cropping = FALSE;
- }
+ GstAllocationParams params = { 0, 15, 0, 0 };
- if (gst_query_get_n_allocation_pools (query) > 0) {
- /* we got configuration from our peer, parse them */
- gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
- } else {
- pool = NULL;
- size = 0;
- min = max = 0;
+ *buffer = gst_buffer_new_allocate (NULL, size, &params);
+ gst_video_codec_frame_set_user_data (frame, *buffer,
+ (GDestroyNotify) frame_user_data_destroy_notify);
}
- GST_DEBUG_OBJECT (dec,
- "size:%d, min:%d, max:%d,pool:%p", size, min, max, pool);
- GST_DEBUG_OBJECT (dec, "downstream cropping %d", dec->has_cropping);
+ gst_video_codec_state_unref (state);
- if (pool == NULL) {
- /* we did not get a pool, make one ourselves then */
- pool = gst_video_buffer_pool_new ();
- }
+ return ret;
+}
- if (dec->pool) {
- gst_buffer_pool_set_active (dec->pool, FALSE);
- gst_object_unref (dec->pool);
+typedef struct
+{
+ gint id;
+ GstVideoFrame frame;
+} GstMpeg2DecBuffer;
+
+static void
+gst_mpeg2dec_clear_buffers (GstMpeg2dec * mpeg2dec)
+{
+ GList *l;
+ while ((l = g_list_first (mpeg2dec->buffers))) {
+ GstMpeg2DecBuffer *mbuf = l->data;
+ gst_video_frame_unmap (&mbuf->frame);
+ g_slice_free (GstMpeg2DecBuffer, mbuf);
+ mpeg2dec->buffers = g_list_delete_link (mpeg2dec->buffers, l);
}
- dec->pool = pool;
+}
+
+static void
+gst_mpeg2dec_save_buffer (GstMpeg2dec * mpeg2dec, gint id,
+ GstVideoFrame * frame)
+{
+ GstMpeg2DecBuffer *mbuf;
+
+ GST_LOG_OBJECT (mpeg2dec, "Saving local info for frame %d", id);
- if (dec->need_cropping && dec->has_cropping) {
- /* we can crop, configure the pool with buffers of caps and size of the
- * decoded picture size and then crop them with metadata */
- pcaps = gst_video_info_to_caps (vinfo);
- size = MAX (size, GST_VIDEO_INFO_SIZE (vinfo));
+ mbuf = g_slice_new0 (GstMpeg2DecBuffer);
+ mbuf->id = id;
+ mbuf->frame = *frame;
+
+ mpeg2dec->buffers = g_list_prepend (mpeg2dec->buffers, mbuf);
+}
+
+static gint
+gst_mpeg2dec_buffer_compare (GstMpeg2DecBuffer * mbuf, gconstpointer id)
+{
+ if (mbuf->id == GPOINTER_TO_INT (id))
+ return 0;
+ return -1;
+}
+
+static void
+gst_mpeg2dec_discard_buffer (GstMpeg2dec * mpeg2dec, gint id)
+{
+ GList *l = g_list_find_custom (mpeg2dec->buffers, GINT_TO_POINTER (id),
+ (GCompareFunc) gst_mpeg2dec_buffer_compare);
+
+ if (l) {
+ GstMpeg2DecBuffer *mbuf = l->data;
+ gst_video_frame_unmap (&mbuf->frame);
+ g_slice_free (GstMpeg2DecBuffer, mbuf);
+ mpeg2dec->buffers = g_list_delete_link (mpeg2dec->buffers, l);
+ GST_LOG_OBJECT (mpeg2dec, "Discarded local info for frame %d", id);
} else {
- /* no cropping, use cropped videoinfo */
- pcaps = gst_caps_ref (caps);
- size = MAX (size, GST_VIDEO_INFO_SIZE (cinfo));
+ GST_WARNING ("Could not find buffer %d, will be leaked until next reset",
+ id);
}
+}
- config = gst_buffer_pool_get_config (pool);
- gst_buffer_pool_config_set_params (config, pcaps, size, min, max);
- gst_caps_unref (pcaps);
+static GstVideoFrame *
+gst_mpeg2dec_get_buffer (GstMpeg2dec * mpeg2dec, gint id)
+{
+ GList *l = g_list_find_custom (mpeg2dec->buffers, GINT_TO_POINTER (id),
+ (GCompareFunc) gst_mpeg2dec_buffer_compare);
- if (gst_query_has_allocation_meta (query, GST_VIDEO_META_API_TYPE)) {
- /* just set the option, if the pool can support it we will transparently use
- * it through the video info API. We could also see if the pool support this
- * option and only activate it then. */
- gst_buffer_pool_config_add_option (config,
- GST_BUFFER_POOL_OPTION_VIDEO_META);
+ if (l) {
+ GstMpeg2DecBuffer *mbuf = l->data;
+ return &mbuf->frame;
}
- gst_buffer_pool_set_config (pool, config);
- /* and activate */
- gst_buffer_pool_set_active (pool, TRUE);
+ return NULL;
+}
- gst_query_unref (query);
+static GstFlowReturn
+gst_mpeg2dec_alloc_buffer (GstMpeg2dec * mpeg2dec, GstVideoCodecFrame * frame,
+ GstBuffer ** buffer)
+{
+ GstFlowReturn ret;
+ GstVideoFrame vframe;
+ guint8 *buf[3];
- return GST_FLOW_OK;
+ ret =
+ gst_mpeg2dec_alloc_sized_buf (mpeg2dec, mpeg2dec->decoded_info.size,
+ frame, buffer);
+ if (G_UNLIKELY (ret != GST_FLOW_OK))
+ goto beach;
+
+ if (mpeg2dec->need_cropping && mpeg2dec->has_cropping) {
+ GstVideoCropMeta *crop;
+ GstVideoCodecState *state;
+ GstVideoInfo *vinfo;
+
+ state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (mpeg2dec));
+ vinfo = &state->info;
+
+ crop = gst_buffer_add_video_crop_meta (frame->output_buffer);
+ /* we can do things slightly more efficient when we know that
+ * downstream understands clipping */
+ crop->x = 0;
+ crop->y = 0;
+ crop->width = vinfo->width;
+ crop->height = vinfo->height;
+
+ gst_video_codec_state_unref (state);
+ }
+
+ if (!gst_video_frame_map (&vframe, &mpeg2dec->decoded_info, *buffer,
+ GST_MAP_READ | GST_MAP_WRITE))
+ goto map_fail;
+
+ buf[0] = GST_VIDEO_FRAME_PLANE_DATA (&vframe, 0);
+ buf[1] = GST_VIDEO_FRAME_PLANE_DATA (&vframe, 1);
+ buf[2] = GST_VIDEO_FRAME_PLANE_DATA (&vframe, 2);
+
+ GST_DEBUG_OBJECT (mpeg2dec, "set_buf: %p %p %p, frame %i",
+ buf[0], buf[1], buf[2], frame->system_frame_number);
+
+ /* Note: We use a non-null 'id' value to make the distinction
+ * between the dummy buffers (which have an id of NULL) and the
+ * ones we did */
+ mpeg2_set_buf (mpeg2dec->decoder, buf,
+ GINT_TO_POINTER (frame->system_frame_number + 1));
+ gst_mpeg2dec_save_buffer (mpeg2dec, frame->system_frame_number, &vframe);
+
+beach:
+ return ret;
+
+map_fail:
+ {
+ GST_ERROR_OBJECT (mpeg2dec, "Failed to map frame");
+ return GST_FLOW_ERROR;
+ }
}
static void
@@ -365,22 +556,26 @@ 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[3] = g_malloc0 (mpeg2dec->decoded_info.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;
+ mpeg2dec->dummybuf[1] =
+ mpeg2dec->dummybuf[0] +
+ GST_VIDEO_INFO_PLANE_OFFSET (&mpeg2dec->decoded_info, 1);
+ mpeg2dec->dummybuf[2] =
+ mpeg2dec->dummybuf[0] +
+ GST_VIDEO_INFO_PLANE_OFFSET (&mpeg2dec->decoded_info, 2);
}
static GstFlowReturn
handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
{
GstFlowReturn ret = GST_FLOW_OK;
+ GstClockTime latency;
const mpeg2_sequence_t *sequence;
- gint par_n, par_d;
- GstVideoInfo vinfo, cinfo;
+ GstVideoCodecState *state;
+ GstVideoInfo *dinfo = &mpeg2dec->decoded_info;
+ GstVideoInfo *vinfo;
GstVideoFormat format;
- GstCaps *caps;
- gint y_size, uv_size;
sequence = info->sequence;
@@ -407,150 +602,127 @@ handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
mpeg2dec->need_cropping = FALSE;
}
- y_size = sequence->width * sequence->height;
/* get subsampling */
if (sequence->chroma_width < sequence->width) {
/* horizontally subsampled */
if (sequence->chroma_height < sequence->height) {
/* and vertically subsamples */
format = GST_VIDEO_FORMAT_I420;
- uv_size = y_size >> 2;
} else {
format = GST_VIDEO_FORMAT_Y42B;
- uv_size = y_size >> 1;
}
} else {
/* not subsampled */
format = GST_VIDEO_FORMAT_Y444;
- uv_size = y_size;
- }
-
- /* calculate size and offsets of the decoded frames */
- mpeg2dec->size = y_size + 2 * (uv_size);
- mpeg2dec->u_offs = y_size;
- mpeg2dec->v_offs = y_size + uv_size;
-
- /* we store the codec size before cropping */
- gst_video_info_init (&vinfo);
- gst_video_info_set_format (&vinfo, format, sequence->width, sequence->height);
-
- /* sink caps par overrides sequence PAR */
- if (mpeg2dec->have_par) {
- par_n = mpeg2dec->in_par_n;
- par_d = mpeg2dec->in_par_d;
- GST_DEBUG_OBJECT (mpeg2dec, "using sink par %d:%d", par_n, par_d);
- } else {
- par_n = sequence->pixel_width;
- par_d = sequence->pixel_height;
- GST_DEBUG_OBJECT (mpeg2dec, "using encoded par %d:%d", par_n, par_d);
}
- if (par_n == 0 || par_d == 0) {
- if (!gst_util_fraction_multiply (4, 3, sequence->picture_height,
- sequence->picture_width, &par_n, &par_d))
- par_n = par_d = 1;
-
- GST_WARNING_OBJECT (mpeg2dec, "Unknown par, assuming %d:%d", par_n, par_d);
+ state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (mpeg2dec),
+ format, sequence->picture_width, sequence->picture_height,
+ mpeg2dec->input_state);
+ vinfo = &state->info;
+
+ /* If we don't have a valid upstream PAR override it */
+ if (GST_VIDEO_INFO_PAR_N (vinfo) == 1 &&
+ GST_VIDEO_INFO_PAR_D (vinfo) == 1 &&
+ sequence->pixel_width != 0 && sequence->pixel_height != 0) {
+ GST_DEBUG_OBJECT (mpeg2dec, "Setting PAR %d x %d",
+ sequence->pixel_width, sequence->pixel_height);
+ vinfo->par_n = sequence->pixel_width;
+ vinfo->par_d = sequence->pixel_height;
}
- vinfo.par_n = par_n;
- vinfo.par_d = par_d;
-
- /* set framerate */
- vinfo.fps_n = 27000000;
- vinfo.fps_d = sequence->frame_period;
- mpeg2dec->frame_period = sequence->frame_period * GST_USECOND / 27;
+ vinfo->fps_n = 27000000;
+ vinfo->fps_d = sequence->frame_period;
if (!(sequence->flags & SEQ_FLAG_PROGRESSIVE_SEQUENCE))
- vinfo.interlace_mode = GST_VIDEO_INTERLACE_MODE_MIXED;
+ vinfo->interlace_mode = GST_VIDEO_INTERLACE_MODE_MIXED;
else
- vinfo.interlace_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+ vinfo->interlace_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
- vinfo.chroma_site = GST_VIDEO_CHROMA_SITE_MPEG2;
- vinfo.colorimetry.range = GST_VIDEO_COLOR_RANGE_16_235;
+ vinfo->chroma_site = GST_VIDEO_CHROMA_SITE_MPEG2;
+ vinfo->colorimetry.range = GST_VIDEO_COLOR_RANGE_16_235;
if (sequence->flags & SEQ_FLAG_COLOUR_DESCRIPTION) {
/* do color description */
switch (sequence->colour_primaries) {
case 1:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT709;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT709;
break;
case 4:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT470M;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT470M;
break;
case 5:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT470BG;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_BT470BG;
break;
case 6:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE170M;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE170M;
break;
case 7:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE240M;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_SMPTE240M;
break;
/* 0 forbidden */
/* 2 unspecified */
/* 3 reserved */
/* 8-255 reseved */
default:
- vinfo.colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_UNKNOWN;
+ vinfo->colorimetry.primaries = GST_VIDEO_COLOR_PRIMARIES_UNKNOWN;
break;
}
/* matrix coefficients */
switch (sequence->matrix_coefficients) {
case 1:
- vinfo.colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_BT709;
+ vinfo->colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_BT709;
break;
case 4:
- vinfo.colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_FCC;
+ vinfo->colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_FCC;
break;
case 5:
case 6:
- vinfo.colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_BT601;
+ vinfo->colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_BT601;
break;
case 7:
- vinfo.colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_SMPTE240M;
+ vinfo->colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_SMPTE240M;
break;
/* 0 forbidden */
/* 2 unspecified */
/* 3 reserved */
/* 8-255 reseved */
default:
- vinfo.colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_UNKNOWN;
+ vinfo->colorimetry.matrix = GST_VIDEO_COLOR_MATRIX_UNKNOWN;
break;
}
/* transfer characteristics */
switch (sequence->transfer_characteristics) {
case 1:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;
break;
case 4:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA22;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA22;
break;
case 5:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA28;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA28;
break;
case 6:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_BT709;
break;
case 7:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_SMPTE240M;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_SMPTE240M;
break;
case 8:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA10;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_GAMMA10;
break;
/* 0 forbidden */
/* 2 unspecified */
/* 3 reserved */
/* 9-255 reseved */
default:
- vinfo.colorimetry.transfer = GST_VIDEO_TRANSFER_UNKNOWN;
+ vinfo->colorimetry.transfer = GST_VIDEO_TRANSFER_UNKNOWN;
break;
}
}
GST_DEBUG_OBJECT (mpeg2dec,
- "sequence flags: %d, frame period: %d (%g), frame rate: %d/%d",
- sequence->flags, sequence->frame_period,
- (double) (mpeg2dec->frame_period) / GST_SECOND, vinfo.fps_n, vinfo.fps_d);
+ "sequence flags: %d, frame period: %d, frame rate: %d/%d",
+ sequence->flags, sequence->frame_period, vinfo->fps_n, vinfo->fps_d);
GST_DEBUG_OBJECT (mpeg2dec, "profile: %02x, colour_primaries: %d",
sequence->profile_level_id, sequence->colour_primaries);
GST_DEBUG_OBJECT (mpeg2dec, "transfer chars: %d, matrix coef: %d",
@@ -563,20 +735,23 @@ handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
sequence->flags & SEQ_FLAG_LOW_DELAY,
sequence->flags & SEQ_FLAG_COLOUR_DESCRIPTION);
- /* for the output caps we always take the cropped dimensions */
- cinfo = vinfo;
- gst_video_info_set_format (&cinfo, GST_VIDEO_INFO_FORMAT (&vinfo),
- sequence->picture_width, sequence->picture_height);
- caps = gst_video_info_to_caps (&cinfo);
- gst_pad_set_caps (mpeg2dec->srcpad, caps);
+ /* we store the codec size before cropping */
+ *dinfo = *vinfo;
+ gst_video_info_set_format (dinfo, format, sequence->width, sequence->height);
+
+ /* Mpeg2dec has 2 frame latency to produce a picture and 1 frame latency in
+ * it's parser */
+ latency = gst_util_uint64_scale (3, vinfo->fps_d, vinfo->fps_n);
+ gst_video_decoder_set_latency (GST_VIDEO_DECODER (mpeg2dec), latency,
+ latency);
- gst_mpeg2dec_negotiate_pool (mpeg2dec, caps, &vinfo, &cinfo);
- gst_caps_unref (caps);
+ if (!gst_video_decoder_negotiate (GST_VIDEO_DECODER (mpeg2dec)))
+ goto negotiation_fail;
- mpeg2dec->vinfo = vinfo;
- mpeg2dec->cinfo = cinfo;
+ gst_video_codec_state_unref (state);
mpeg2_custom_fbuf (mpeg2dec->decoder, 1);
+
init_dummybuf (mpeg2dec);
/* Pump in some null buffers, because otherwise libmpeg2 doesn't
@@ -584,17 +759,14 @@ handle_sequence (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
mpeg2_set_buf (mpeg2dec->decoder, mpeg2dec->dummybuf, NULL);
+ gst_mpeg2dec_clear_buffers (mpeg2dec);
- mpeg2dec->need_sequence = FALSE;
-
-done:
return ret;
invalid_frame_period:
{
GST_WARNING_OBJECT (mpeg2dec, "Frame period is 0!");
- ret = GST_FLOW_ERROR;
- goto done;
+ return GST_FLOW_ERROR;
}
invalid_size:
{
@@ -602,484 +774,197 @@ invalid_size:
sequence->width, sequence->height);
return GST_FLOW_ERROR;
}
-}
-
-static void
-clear_buffers (GstMpeg2dec * mpeg2dec)
-{
- gint i;
- GstVideoFrame *frame;
-
- for (i = 0; i < 4; i++) {
- frame = &mpeg2dec->ip_frame[i];
- if (frame->buffer) {
- gst_video_frame_unmap (frame);
- gst_buffer_unref (frame->buffer);
- frame->buffer = NULL;
- }
- }
- frame = &mpeg2dec->b_frame;
- if (frame->buffer) {
- gst_video_frame_unmap (frame);
- gst_buffer_unref (frame->buffer);
- frame->buffer = 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);
+negotiation_fail:
+ {
+ GST_WARNING_OBJECT (mpeg2dec, "Failed to negotiate with downstream");
+ return GST_FLOW_ERROR;
}
- return res;
}
static GstFlowReturn
-handle_picture (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
+handle_picture (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info,
+ GstVideoCodecFrame * frame)
{
- gboolean key_frame = FALSE;
- GstBuffer *outbuf;
- GstVideoFrame *frame;
GstFlowReturn ret;
gint type;
- guint8 *buf[3];
-
- if (mpeg2dec->need_cropping && !mpeg2dec->has_cropping) {
- GstAllocationParams params = { 0, };
-
- /* we need to crop manually */
- params.align = 15;
- outbuf =
- gst_buffer_new_allocate (NULL, GST_VIDEO_INFO_SIZE (&mpeg2dec->vinfo),
- &params);
- ret = GST_FLOW_OK;
- } else {
- ret = gst_buffer_pool_acquire_buffer (mpeg2dec->pool, &outbuf, NULL);
- if (G_UNLIKELY (ret != GST_FLOW_OK))
- goto no_buffer;
- }
-
- /* we store the original byteoffset of this picture in the stream here
- * because we need it for indexing */
- GST_BUFFER_OFFSET (outbuf) = mpeg2dec->offset;
-
- 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);
+ const gchar *type_str = NULL;
+ gboolean key_frame = FALSE;
+ const mpeg2_picture_t *picture = info->current_picture;
+ GstBuffer *buffer;
- key_frame = type == PIC_FLAG_CODING_TYPE_I;
+ ret = gst_mpeg2dec_alloc_buffer (mpeg2dec, frame, &buffer);
+ if (ret != GST_FLOW_OK)
+ return ret;
+ type = picture->flags & PIC_MASK_CODING_TYPE;
switch (type) {
case PIC_FLAG_CODING_TYPE_I:
+ key_frame = TRUE;
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);
- }
- /* fallthrough */
+ type_str = "I";
+ break;
case PIC_FLAG_CODING_TYPE_P:
- frame = &mpeg2dec->ip_frame[mpeg2dec->ip_framepos];
- GST_DEBUG_OBJECT (mpeg2dec, "I/P unref %p, ref %p", frame, outbuf);
- mpeg2dec->ip_framepos = (mpeg2dec->ip_framepos + 1) & 3;
+ type_str = "P";
break;
case PIC_FLAG_CODING_TYPE_B:
- frame = &mpeg2dec->b_frame;
- GST_DEBUG_OBJECT (mpeg2dec, "B unref %p, ref %p", frame, outbuf);
+ type_str = "B";
break;
default:
- goto unknown_frame;
+ gst_video_codec_frame_ref (frame);
+ ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame);
+ GST_VIDEO_DECODER_ERROR (mpeg2dec, 1, STREAM, DECODE,
+ ("decoding error"), ("Invalid picture type"), ret);
+ return ret;
}
- if (frame->buffer) {
- gst_video_frame_unmap (frame);
- gst_buffer_unref (frame->buffer);
- frame->buffer = NULL;
- }
-
- if (mpeg2dec->need_cropping && mpeg2dec->has_cropping) {
- GstVideoCropMeta *crop;
+ GST_DEBUG_OBJECT (mpeg2dec, "handle picture type %s", type_str);
+ GST_DEBUG_OBJECT (mpeg2dec, "picture %s, frame %i",
+ key_frame ? ", kf," : " ", frame->system_frame_number);
- crop = gst_buffer_add_video_crop_meta (outbuf);
- /* we can do things slightly more efficient when we know that
- * downstream understands clipping */
- crop->x = 0;
- crop->y = 0;
- crop->width = info->sequence->picture_width;
- crop->height = info->sequence->picture_height;
+ if (GST_VIDEO_INFO_IS_INTERLACED (&mpeg2dec->decoded_info)) {
+ /* This implies SEQ_FLAG_PROGRESSIVE_SEQUENCE is not set */
+ if (picture->flags & PIC_FLAG_TOP_FIELD_FIRST) {
+ GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
+ }
+ if (!(picture->flags & PIC_FLAG_PROGRESSIVE_FRAME)) {
+ GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_INTERLACED);
+ }
+#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 (buffer, GST_VIDEO_BUFFER_FLAG_RFF);
+ }
+#endif
}
- gst_video_frame_map (frame, &mpeg2dec->vinfo, outbuf, GST_MAP_WRITE);
-
- buf[0] = GST_VIDEO_FRAME_PLANE_DATA (frame, 0);
- buf[1] = GST_VIDEO_FRAME_PLANE_DATA (frame, 1);
- buf[2] = GST_VIDEO_FRAME_PLANE_DATA (frame, 2);
-
- GST_DEBUG_OBJECT (mpeg2dec, "set_buf: %p %p %p, outbuf %p",
- buf[0], buf[1], buf[2], outbuf);
-
- mpeg2_set_buf (mpeg2dec->decoder, buf, frame);
-
- 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)
+ if (mpeg2dec->discont_state == MPEG2DEC_DISC_NEW_PICTURE && key_frame) {
mpeg2dec->discont_state = MPEG2DEC_DISC_NEW_KEYFRAME;
-
- return ret;
-
-no_buffer:
- {
- return ret;
}
-unknown_frame:
- {
- 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;
- guint64 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;
+ GST_DEBUG_OBJECT (mpeg2dec,
+ "picture: %s %s %s %s %s fields:%d 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_TIME_ARGS (frame->pts));
-beach:
- GST_LOG_OBJECT (dec, "%sdropping", (res ? "not " : ""));
- return res;
+ return ret;
}
static GstFlowReturn
handle_slice (GstMpeg2dec * mpeg2dec, const mpeg2_info_t * info)
{
- GstBuffer *outbuf = NULL;
GstFlowReturn ret = GST_FLOW_OK;
+ GstVideoCodecFrame *frame;
const mpeg2_picture_t *picture;
gboolean key_frame = FALSE;
- GstClockTime time;
- GstVideoFrame *frame;
-
- 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;
-
- frame = (GstVideoFrame *) (info->display_fbuf->id);
- outbuf = frame->buffer;
+ GstVideoCodecState *state;
+ GST_DEBUG_OBJECT (mpeg2dec,
+ "fbuf:%p display_picture:%p current_picture:%p fbuf->id:%d",
+ info->display_fbuf, info->display_picture, info->current_picture,
+ GPOINTER_TO_INT (info->display_fbuf->id) - 1);
+
+ /* Note, the fbuf-id is shifted by 1 to make the difference between
+ * NULL values (used by dummy buffers) and 'real' values */
+ frame = gst_video_decoder_get_frame (GST_VIDEO_DECODER (mpeg2dec),
+ GPOINTER_TO_INT (info->display_fbuf->id) - 1);
+ if (!frame)
+ goto no_frame;
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;
+ if (picture->flags & PIC_FLAG_SKIP) {
+ GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer because of skip flag");
+ ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame);
+ mpeg2_skip (mpeg2dec->decoder, 1);
+ return ret;
}
- 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;
+ if (mpeg2dec->discont_state != MPEG2DEC_DISC_NONE) {
+ GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer, discont state %d",
+ mpeg2dec->discont_state);
+ ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame);
+ return ret;
}
- mpeg2dec->next_time += GST_BUFFER_DURATION (outbuf);
- if (picture->flags & PIC_FLAG_TOP_FIELD_FIRST)
- GST_BUFFER_FLAG_SET (outbuf, GST_VIDEO_BUFFER_FLAG_TFF);
+ state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (mpeg2dec));
-#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_FLAG_RFF);
-#endif
+ /* do cropping if the target region is smaller than the input one */
+ if (mpeg2dec->need_cropping && !mpeg2dec->has_cropping) {
+ GstVideoFrame *vframe;
- 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 (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;
+ if (gst_video_decoder_get_max_decode_time (GST_VIDEO_DECODER (mpeg2dec),
+ frame) < 0) {
+ GST_DEBUG_OBJECT (mpeg2dec, "dropping buffer crop, too late");
+ ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (mpeg2dec), frame);
+ goto beach;
}
- }
-
- 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->need_cropping && !mpeg2dec->has_cropping) {
GST_DEBUG_OBJECT (mpeg2dec, "cropping buffer");
- ret = gst_mpeg2dec_crop_buffer (mpeg2dec, &outbuf, frame);
- if (ret != GST_FLOW_OK)
- goto done;
+ vframe = gst_mpeg2dec_get_buffer (mpeg2dec, frame->system_frame_number);
+ g_assert (vframe != NULL);
+ ret = gst_mpeg2dec_crop_buffer (mpeg2dec, frame, vframe);
}
- 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:
+ ret = gst_video_decoder_finish_frame (GST_VIDEO_DECODER (mpeg2dec), frame);
+
+beach:
+ gst_video_codec_state_unref (state);
return ret;
- /* special cases */
-no_display:
+no_frame:
{
- 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;
+ GST_WARNING ("display buffer does not have a valid frame");
+ return GST_FLOW_ERROR;
}
+
}
static GstFlowReturn
-gst_mpeg2dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+gst_mpeg2dec_handle_frame (GstVideoDecoder * decoder,
+ GstVideoCodecFrame * frame)
{
- GstMpeg2dec *mpeg2dec;
- GstMapInfo map;
- GstClockTime pts;
+ GstMpeg2dec *mpeg2dec = GST_MPEG2DEC (decoder);
+ GstBuffer *buf = frame->input_buffer;
+ GstMapInfo minfo;
const mpeg2_info_t *info;
mpeg2_state_t state;
gboolean done = FALSE;
GstFlowReturn ret = GST_FLOW_OK;
- mpeg2dec = GST_MPEG2DEC (parent);
-
- gst_buffer_map (buf, &map, GST_MAP_READ);
- pts = GST_BUFFER_TIMESTAMP (buf);
+ GST_LOG_OBJECT (mpeg2dec, "received frame %d, timestamp %"
+ GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT,
+ frame->system_frame_number,
+ GST_TIME_ARGS (frame->pts), GST_TIME_ARGS (frame->duration));
- 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;
+ if (!gst_buffer_map (buf, &minfo, GST_MAP_READ)) {
+ GST_ERROR_OBJECT (mpeg2dec, "Failed to map input buffer");
+ return GST_FLOW_ERROR;
}
- 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;
- 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, map.data, map.data + map.size);
+ mpeg2_buffer (mpeg2dec->decoder, minfo.data, minfo.data + minfo.size);
GST_LOG_OBJECT (mpeg2dec, "calling mpeg2_buffer done");
while (!done) {
@@ -1100,19 +985,11 @@ gst_mpeg2dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
* 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;
+ GST_VIDEO_DECODER_ERROR (decoder, 1, STREAM, DECODE,
+ ("decoding error"), ("Bad sequence header"), ret);
+ gst_video_decoder_drop_frame (decoder, frame);
+ gst_mpeg2dec_reset (decoder, 0);
+ goto done;
}
break;
case STATE_SEQUENCE_REPEATED:
@@ -1122,7 +999,7 @@ gst_mpeg2dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
GST_DEBUG_OBJECT (mpeg2dec, "gop");
break;
case STATE_PICTURE:
- ret = handle_picture (mpeg2dec, info);
+ ret = handle_picture (mpeg2dec, info, frame);
break;
case STATE_SLICE_1ST:
GST_LOG_OBJECT (mpeg2dec, "1st slice of frame encountered");
@@ -1137,46 +1014,35 @@ gst_mpeg2dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
#endif
case STATE_END:
GST_DEBUG_OBJECT (mpeg2dec, "end");
- mpeg2dec->need_sequence = TRUE;
case STATE_SLICE:
- ret = handle_slice (mpeg2dec, info);
+ GST_DEBUG_OBJECT (mpeg2dec, "display_fbuf:%p, discard_fbuf:%p",
+ info->display_fbuf, info->discard_fbuf);
+ if (info->display_fbuf && info->display_fbuf->id) {
+ ret = handle_slice (mpeg2dec, info);
+ } else {
+ GST_DEBUG_OBJECT (mpeg2dec, "no picture to display");
+ }
+ if (info->discard_fbuf && info->discard_fbuf->id)
+ gst_mpeg2dec_discard_buffer (mpeg2dec,
+ GPOINTER_TO_INT (info->discard_fbuf->id) - 1);
+ if (state != STATE_SLICE) {
+ gst_mpeg2dec_clear_buffers (mpeg2dec);
+ }
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));
- }
+ GST_VIDEO_DECODER_ERROR (decoder, 1, STREAM, DECODE,
+ ("decoding error"), ("Reached libmpeg2 invalid state"), ret);
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_allocate (NULL, info->user_data_len, NULL);
-
- gst_buffer_fill (udbuf, 0, info->user_data, info->user_data_len);
-
- gst_pad_push (mpeg2dec->userdatapad, udbuf);
+ ret = GST_FLOW_OK;
+ gst_video_codec_frame_unref (frame);
+ goto done;
}
-#endif
if (ret != GST_FLOW_OK) {
GST_DEBUG_OBJECT (mpeg2dec, "exit loop, reason %s",
@@ -1184,218 +1050,12 @@ gst_mpeg2dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
break;
}
}
-done:
- gst_buffer_unmap (buf, &map);
- gst_buffer_unref (buf);
- return ret;
-
- /* errors */
-exit:
- {
- ret = GST_FLOW_OK;
- goto done;
- }
-}
-
-static gboolean
-gst_mpeg2dec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
- GstMpeg2dec *mpeg2dec;
- gboolean ret = TRUE;
-
- mpeg2dec = GST_MPEG2DEC (parent);
-
- GST_DEBUG_OBJECT (mpeg2dec, "Got %s event on sink pad",
- GST_EVENT_TYPE_NAME (event));
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CAPS:
- {
- GstCaps *caps;
-
- gst_event_parse_caps (event, &caps);
- ret = gst_mpeg2dec_setcaps (pad, caps);
- gst_event_unref (event);
- break;
- }
- case GST_EVENT_SEGMENT:
- {
- GstSegment seg;
-
- gst_event_copy_segment (event, &seg);
-
- /* we need TIME */
- if (seg.format != GST_FORMAT_TIME)
- goto newseg_wrong_format;
- /* now configure the values */
- mpeg2dec->segment = seg;
-
- GST_DEBUG_OBJECT (mpeg2dec, "Pushing seg %" GST_SEGMENT_FORMAT, &seg);
-
- 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:
- ret = gst_pad_push_event (mpeg2dec->srcpad, event);
- break;
- default:
- ret = gst_pad_push_event (mpeg2dec->srcpad, event);
- break;
- }
+ gst_video_codec_frame_unref (frame);
done:
-
+ gst_buffer_unmap (buf, &minfo);
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->in_par_n, &mpeg2dec->in_par_d);
-
- gst_object_unref (mpeg2dec);
-
- return TRUE;
-}
-
-static gboolean
-gst_mpeg2dec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
- gboolean res;
- GstMpeg2dec *mpeg2dec;
-
- mpeg2dec = GST_MPEG2DEC (parent);
-
- if (mpeg2dec->decoder == NULL)
- goto no_decoder;
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_QOS:
- {
- GstQOSType type;
- gdouble proportion;
- GstClockTimeDiff diff;
- GstClockTime timestamp;
-
- gst_event_parse_qos (event, &type, &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_SEEK:
- case GST_EVENT_NAVIGATION:
- /* Forward 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);
- if (mpeg2dec->pool) {
- gst_buffer_pool_set_active (mpeg2dec->pool, FALSE);
- gst_object_unref (mpeg2dec->pool);
- mpeg2dec->pool = NULL;
- }
- 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
diff --git a/ext/mpeg2dec/gstmpeg2dec.h b/ext/mpeg2dec/gstmpeg2dec.h
index eaf6fa4..459ede5 100644
--- a/ext/mpeg2dec/gstmpeg2dec.h
+++ b/ext/mpeg2dec/gstmpeg2dec.h
@@ -24,8 +24,7 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <gst/video/gstvideopool.h>
-#include <gst/video/gstvideometa.h>
+#include <gst/video/gstvideodecoder.h>
#include <mpeg2.h>
G_BEGIN_DECLS
@@ -55,12 +54,7 @@ typedef enum
} DiscontState;
struct _GstMpeg2dec {
- GstElement element;
-
- /* pads */
- GstPad *sinkpad,
- *srcpad,
- *userdatapad;
+ GstVideoDecoder element;
mpeg2dec_t *decoder;
const mpeg2_info_t *info;
@@ -68,56 +62,26 @@ struct _GstMpeg2dec {
gboolean closed;
gboolean have_fbuf;
- /* buffer management */
- guint ip_framepos;
- GstVideoFrame ip_frame[4];
- GstVideoFrame b_frame;
+ /* Buffer lifetime management */
+ GList *buffers;
+ /* FIXME This should not be necessary. It is used to prevent image
+ * corruption when the parser does not behave the way it should.
+ * See https://bugzilla.gnome.org/show_bug.cgi?id=674238
+ */
DiscontState discont_state;
- /* the timestamp of the next frame */
- GstClockTime next_time;
- GstSegment segment;
-
- /* whether we have a pixel aspect ratio from the sink caps */
- gboolean have_par;
- gint in_par_n;
- gint in_par_d;
-
/* video state */
- GstVideoInfo vinfo;
- GstVideoInfo cinfo;
+ GstVideoCodecState *input_state;
+ GstVideoInfo decoded_info;
gboolean need_cropping;
gboolean has_cropping;
- gint64 frame_period;
- gboolean interlaced;
- GstBufferPool *pool;
- gint size;
- gint u_offs;
- gint v_offs;
guint8 *dummybuf[4];
-
- guint64 offset;
- gboolean need_sequence;
-
- 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;
};
struct _GstMpeg2decClass {
- GstElementClass parent_class;
+ GstVideoDecoderClass parent_class;
};
GType gst_mpeg2dec_get_type(void);
diff --git a/ext/sidplay/Makefile.in b/ext/sidplay/Makefile.in
index 95f21de..5c56685 100644
--- a/ext/sidplay/Makefile.in
+++ b/ext/sidplay/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/sidplay/gstsiddec.cc b/ext/sidplay/gstsiddec.cc
index 17b611b..667f209 100644
--- a/ext/sidplay/gstsiddec.cc
+++ b/ext/sidplay/gstsiddec.cc
@@ -128,13 +128,17 @@ gst_sid_memory_get_type (void)
static void gst_siddec_finalize (GObject * object);
-static GstFlowReturn gst_siddec_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer);
-static gboolean gst_siddec_sink_event (GstPad * pad, GstObject * parent, GstEvent * event);
+static GstFlowReturn gst_siddec_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer);
+static gboolean gst_siddec_sink_event (GstPad * pad, GstObject * parent,
+ 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, GstObject * parent, GstEvent * event);
-static gboolean gst_siddec_src_query (GstPad * pad, GstObject * parent, GstQuery * query);
+static gboolean gst_siddec_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_siddec_src_query (GstPad * pad, GstObject * parent,
+ GstQuery * query);
static void gst_siddec_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
@@ -160,37 +164,37 @@ gst_siddec_class_init (GstSidDecClass * klass)
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)));
+ (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)));
+ (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)));
+ (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)));
+ (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)));
+ (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)));
+ (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)));
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_BLOCKSIZE,
g_param_spec_uint ("blocksize", "Block size",
"Size in bytes to output per buffer", 1, G_MAXUINT,
DEFAULT_BLOCKSIZE,
- (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+ (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)));
+ (GParamFlags) (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)));
gst_element_class_set_static_metadata (gstelement_class, "Sid decoder",
"Codec/Decoder/Audio", "Use libsidplay to decode SID audio tunes",
@@ -272,7 +276,7 @@ update_tags (GstSidDec * siddec)
gst_tag_list_add (list, GST_TAG_MERGE_REPLACE,
GST_TAG_COPYRIGHT, info.copyrightString, (void *) NULL);
}
- gst_pad_push_event (siddec->srcpad, gst_event_new_tag ("GstDecoder", list));
+ gst_pad_push_event (siddec->srcpad, gst_event_new_tag (list));
}
}
@@ -286,6 +290,7 @@ siddec_negotiate (GstSidDec * siddec)
GstCaps *caps;
const gchar *str;
GstAudioFormat format;
+ gchar *stream_id;
allowed = gst_pad_get_allowed_caps (siddec->srcpad);
if (!allowed)
@@ -328,6 +333,10 @@ siddec_negotiate (GstSidDec * siddec)
gst_structure_get_int (structure, "channels", &channels);
siddec->config->channels = channels;
+ stream_id = gst_pad_create_stream_id (siddec->srcpad, GST_ELEMENT_CAST (siddec), NULL);
+ gst_pad_push_event (siddec->srcpad, gst_event_new_stream_start (stream_id));
+ g_free (stream_id);
+
caps = gst_caps_new_simple ("audio/x-raw",
"format", G_TYPE_STRING, gst_audio_format_to_string (format),
"layout", G_TYPE_STRING, "interleaved",
@@ -417,7 +426,7 @@ pause:
if (ret == GST_FLOW_EOS) {
/* perform EOS logic, FIXME, segment seek? */
gst_pad_push_event (pad, gst_event_new_eos ());
- } else if (ret < GST_FLOW_EOS || ret == GST_FLOW_NOT_LINKED) {
+ } else if (ret < GST_FLOW_EOS || 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));
@@ -449,11 +458,10 @@ start_play_tune (GstSidDec * siddec)
goto could_not_init;
gst_segment_init (&segment, GST_FORMAT_TIME);
- gst_pad_push_event (siddec->srcpad,
- gst_event_new_segment (&segment));
+ gst_pad_push_event (siddec->srcpad, gst_event_new_segment (&segment));
res = gst_pad_start_task (siddec->srcpad,
- (GstTaskFunction) play_loop, siddec->srcpad);
+ (GstTaskFunction) play_loop, siddec->srcpad, NULL);
return res;
/* ERRORS */
diff --git a/ext/twolame/Makefile.in b/ext/twolame/Makefile.in
index 2f8693c..0a81e0c 100644
--- a/ext/twolame/Makefile.in
+++ b/ext/twolame/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -234,7 +234,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/x264/Makefile.in b/ext/x264/Makefile.in
index 087803f..25d33f8 100644
--- a/ext/x264/Makefile.in
+++ b/ext/x264/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -236,7 +236,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c
index 1708d42..cb4fb8f 100644
--- a/ext/x264/gstx264enc.c
+++ b/ext/x264/gstx264enc.c
@@ -98,6 +98,8 @@
#include <gst/pbutils/pbutils.h>
#include <gst/video/video.h>
+#include <gst/video/gstvideometa.h>
+#include <gst/video/gstvideopool.h>
#include <string.h>
#include <stdlib.h>
@@ -402,33 +404,32 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
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 }, "
+ "stream-format = (string) { avc, byte-stream }, "
"alignment = (string) { au }, "
"profile = (string) { high-10, high, main, baseline, "
"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_reset (GstVideoEncoder * encoder, gboolean hard);
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, GstCaps * filter);
-static gboolean gst_x264_enc_sink_event (GstPad * pad, GstObject * parent,
+static GstFlowReturn gst_x264_enc_finish (GstVideoEncoder * encoder);
+static gboolean gst_x264_enc_sink_event (GstVideoEncoder * encoder,
GstEvent * event);
-static gboolean gst_x264_enc_sink_query (GstPad * pad, GstObject * parent,
- GstQuery * query);
-static gboolean gst_x264_enc_src_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
-static GstFlowReturn gst_x264_enc_chain (GstPad * pad, GstObject * parent,
- GstBuffer * buf);
+static GstFlowReturn gst_x264_enc_handle_frame (GstVideoEncoder * encoder,
+ GstVideoCodecFrame * frame);
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);
+ x264_picture_t * pic_in, GstVideoCodecFrame * input_frame, int *i_nal,
+ gboolean send);
+static gboolean gst_x264_enc_stop (GstVideoEncoder * encoder);
+static gboolean gst_x264_enc_set_format (GstVideoEncoder * video_enc,
+ GstVideoCodecState * state);
+static gboolean gst_x264_enc_propose_allocation (GstVideoEncoder * encoder,
+ GstQuery * query);
static void gst_x264_enc_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
@@ -436,7 +437,7 @@ static void gst_x264_enc_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
#define gst_x264_enc_parent_class parent_class
-G_DEFINE_TYPE_WITH_CODE (GstX264Enc, gst_x264_enc, GST_TYPE_ELEMENT,
+G_DEFINE_TYPE_WITH_CODE (GstX264Enc, gst_x264_enc, GST_TYPE_VIDEO_ENCODER,
G_IMPLEMENT_INTERFACE (GST_TYPE_PRESET, NULL));
/* don't forget to free the string after use */
@@ -467,19 +468,30 @@ static void
gst_x264_enc_class_init (GstX264EncClass * klass)
{
GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
+ GstElementClass *element_class;
+ GstVideoEncoderClass *gstencoder_class;
const gchar *partitions = NULL;
x264enc_defaults = g_string_new ("");
- gobject_class = (GObjectClass *) klass;
- gstelement_class = (GstElementClass *) klass;
+ gobject_class = G_OBJECT_CLASS (klass);
+ element_class = GST_ELEMENT_CLASS (klass);
+ gstencoder_class = GST_VIDEO_ENCODER_CLASS (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;
+ gstencoder_class->stop = GST_DEBUG_FUNCPTR (gst_x264_enc_stop);
+ gstencoder_class->set_format = GST_DEBUG_FUNCPTR (gst_x264_enc_set_format);
+ gstencoder_class->handle_frame =
+ GST_DEBUG_FUNCPTR (gst_x264_enc_handle_frame);
+ gstencoder_class->reset = GST_DEBUG_FUNCPTR (gst_x264_enc_reset);
+ gstencoder_class->finish = GST_DEBUG_FUNCPTR (gst_x264_enc_finish);
+ gstencoder_class->sink_event = GST_DEBUG_FUNCPTR (gst_x264_enc_sink_event);
+ gstencoder_class->propose_allocation =
+ GST_DEBUG_FUNCPTR (gst_x264_enc_propose_allocation);
+
/* 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",
@@ -706,18 +718,17 @@ gst_x264_enc_class_init (GstX264EncClass * klass)
/* append weighted prediction parameter */
g_string_append_printf (x264enc_defaults, ":weightp=0");
- gst_element_class_set_static_metadata (gstelement_class,
+ gst_element_class_set_static_metadata (element_class,
"x264enc", "Codec/Encoder/Video", "H264 Encoder",
"Josef Zlomek <josef.zlomek@itonis.tv>, "
"Mark Nauwelaerts <mnauw@users.sf.net>");
- gst_element_class_add_pad_template (gstelement_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
+ gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&sink_factory));
- gstelement_class->change_state =
- GST_DEBUG_FUNCPTR (gst_x264_enc_change_state);
+
}
static void
@@ -760,22 +771,6 @@ gst_x264_enc_log_callback (gpointer private, gint level, const char *format,
static void
gst_x264_enc_init (GstX264Enc * encoder)
{
- encoder->sinkpad = gst_pad_new_from_static_template (&sink_factory, "sink");
- 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_pad_set_query_function (encoder->sinkpad,
- GST_DEBUG_FUNCPTR (gst_x264_enc_sink_query));
- 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;
@@ -816,11 +811,6 @@ gst_x264_enc_init (GstX264Enc * encoder)
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 */
@@ -828,23 +818,88 @@ gst_x264_enc_init (GstX264Enc * encoder)
encoder->x264param.p_log_private = encoder;
encoder->x264param.i_log_level = X264_LOG_DEBUG;
- gst_segment_init (&encoder->segment, GST_FORMAT_TIME);
- encoder->force_key_unit_event = NULL;
- gst_x264_enc_reset (encoder);
+ gst_x264_enc_reset (GST_VIDEO_ENCODER (encoder), FALSE);
+}
+
+typedef struct
+{
+ GstVideoCodecFrame *frame;
+ GstVideoFrame vframe;
+} FrameData;
+
+static FrameData *
+gst_x264_enc_queue_frame (GstX264Enc * enc, GstVideoCodecFrame * frame,
+ GstVideoInfo * info)
+{
+ GstVideoFrame vframe;
+ FrameData *fdata;
+
+ if (!gst_video_frame_map (&vframe, info, frame->input_buffer, GST_MAP_READ))
+ return NULL;
+
+ fdata = g_slice_new (FrameData);
+ fdata->frame = gst_video_codec_frame_ref (frame);
+ fdata->vframe = vframe;
+
+ enc->pending_frames = g_list_prepend (enc->pending_frames, fdata);
+
+ return fdata;
}
static void
-gst_x264_enc_reset (GstX264Enc * encoder)
+gst_x264_enc_dequeue_frame (GstX264Enc * enc, GstVideoCodecFrame * frame)
{
- encoder->x264enc = NULL;
- gst_video_info_init (&encoder->info);
- encoder->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
- gst_segment_init (&encoder->segment, GST_FORMAT_UNDEFINED);
+ GList *l;
- GST_OBJECT_LOCK (encoder);
- gst_event_replace (&encoder->force_key_unit_event, NULL);
- encoder->pending_key_unit_ts = GST_CLOCK_TIME_NONE;
- GST_OBJECT_UNLOCK (encoder);
+ for (l = enc->pending_frames; l; l = l->next) {
+ FrameData *fdata = l->data;
+
+ if (fdata->frame != frame)
+ continue;
+
+ gst_video_frame_unmap (&fdata->vframe);
+ gst_video_codec_frame_unref (fdata->frame);
+ g_slice_free (FrameData, fdata);
+
+ enc->pending_frames = g_list_delete_link (enc->pending_frames, l);
+ return;
+ }
+}
+
+static void
+gst_x264_enc_dequeue_all_frames (GstX264Enc * enc)
+{
+ GList *l;
+
+ for (l = enc->pending_frames; l; l = l->next) {
+ FrameData *fdata = l->data;
+
+ gst_video_frame_unmap (&fdata->vframe);
+ gst_video_codec_frame_unref (fdata->frame);
+ g_slice_free (FrameData, fdata);
+ }
+ g_list_free (enc->pending_frames);
+ enc->pending_frames = NULL;
+}
+
+static gboolean
+gst_x264_enc_reset (GstVideoEncoder * encoder, gboolean hard)
+{
+ GstX264Enc *x264enc = GST_X264_ENC (encoder);
+
+ if (hard) {
+ gst_x264_enc_flush_frames (x264enc, FALSE);
+ gst_x264_enc_close_encoder (x264enc);
+ }
+
+ if (x264enc->input_state)
+ gst_video_codec_state_unref (x264enc->input_state);
+ x264enc->input_state = NULL;
+ x264enc->current_byte_stream = GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY;
+
+ gst_x264_enc_dequeue_all_frames (x264enc);
+
+ return TRUE;
}
static void
@@ -852,6 +907,10 @@ gst_x264_enc_finalize (GObject * object)
{
GstX264Enc *encoder = GST_X264_ENC (object);
+ if (encoder->input_state)
+ gst_video_codec_state_unref (encoder->input_state);
+ encoder->input_state = NULL;
+
#define FREE_STRING(ptr) \
if (ptr) \
g_string_free (ptr, TRUE);
@@ -864,10 +923,6 @@ gst_x264_enc_finalize (GObject * object)
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);
@@ -933,7 +988,7 @@ static gboolean
gst_x264_enc_init_encoder (GstX264Enc * encoder)
{
guint pass = 0;
- gint width, height, fps_n, fps_d;
+ GstVideoInfo *info = &encoder->input_state->info;
/* make sure that the encoder is closed */
gst_x264_enc_close_encoder (encoder);
@@ -999,36 +1054,29 @@ gst_x264_enc_init_encoder (GstX264Enc * encoder)
}
}
- width = GST_VIDEO_INFO_WIDTH (&encoder->info);
- height = GST_VIDEO_INFO_HEIGHT (&encoder->info);
- fps_n = GST_VIDEO_INFO_FPS_N (&encoder->info);
- fps_d = GST_VIDEO_INFO_FPS_D (&encoder->info);
/* set up encoder parameters */
-
-
- encoder->x264param.i_fps_num = fps_n;
- encoder->x264param.i_fps_den = fps_d;
- encoder->x264param.i_width = width;
- encoder->x264param.i_height = height;
- if (GST_VIDEO_INFO_PAR_D (&encoder->info) > 0) {
- encoder->x264param.vui.i_sar_width = GST_VIDEO_INFO_PAR_N (&encoder->info);
- encoder->x264param.vui.i_sar_height = GST_VIDEO_INFO_PAR_D (&encoder->info);
+ encoder->x264param.i_fps_num = info->fps_n;
+ encoder->x264param.i_fps_den = info->fps_d;
+ encoder->x264param.i_width = info->width;
+ encoder->x264param.i_height = info->height;
+ if (info->par_d > 0) {
+ encoder->x264param.vui.i_sar_width = info->par_n;
+ encoder->x264param.vui.i_sar_height = info->par_d;
}
- /* 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 * fps_n / fps_d);
+ (10 * info->fps_n / info->fps_d);
- if ((((height == 576) && ((width == 720)
- || (width == 704) || (width == 352)))
- || ((height == 288) && (width == 352)))
- && (fps_d == 1) && (fps_n == 25)) {
+ if ((((info->height == 576) && ((info->width == 720)
+ || (info->width == 704) || (info->width == 352)))
+ || ((info->height == 288) && (info->width == 352)))
+ && (info->fps_d == 1) && (info->fps_n == 25)) {
encoder->x264param.vui.i_vidformat = 1; /* PAL */
- } else if ((((height == 480) && ((width == 720)
- || (width == 704) || (width == 352)))
- || ((height == 240) && (width == 352)))
- && (fps_d == 1001) && ((fps_n == 30000)
- || (fps_n == 24000))) {
+ } else if ((((info->height == 480) && ((info->width == 720)
+ || (info->width == 704) || (info->width == 352)))
+ || ((info->height == 240) && (info->width == 352)))
+ && (info->fps_d == 1001) && ((info->fps_n == 30000)
+ || (info->fps_n == 24000))) {
encoder->x264param.vui.i_vidformat = 2; /* NTSC */
} else
encoder->x264param.vui.i_vidformat = 5; /* unspecified */
@@ -1072,6 +1120,14 @@ gst_x264_enc_init_encoder (GstX264Enc * encoder)
encoder->x264param.rc.b_stat_read = 0;
encoder->x264param.rc.b_stat_write = 1;
x264_param_apply_fastfirstpass (&encoder->x264param);
+ 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;
break;
case 2:
encoder->x264param.rc.b_stat_read = 1;
@@ -1083,22 +1139,6 @@ gst_x264_enc_init_encoder (GstX264Enc * encoder)
break;
}
- /* 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;
- }
-
if (encoder->peer_profile) {
if (x264_param_apply_profile (&encoder->x264param, encoder->peer_profile))
GST_WARNING_OBJECT (encoder, "Bad downstream profile name: %s",
@@ -1126,7 +1166,9 @@ gst_x264_enc_init_encoder (GstX264Enc * encoder)
if (encoder->peer_level->frame_only) {
encoder->x264param.b_interlaced = FALSE;
+#if X264_BUILD >= 95
encoder->x264param.b_fake_interlaced = FALSE;
+#endif
}
}
@@ -1183,8 +1225,6 @@ gst_x264_enc_set_profile_and_level (GstX264Enc * encoder, GstCaps * caps)
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 */
sps = nal[sps_ni].p_payload + 4;
/* skip NAL unit type */
sps++;
@@ -1246,8 +1286,6 @@ gst_x264_enc_header_buf (GstX264Enc * encoder)
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 */
sps = nal[sps_ni].p_payload + 4;
/* skip NAL unit type */
sps++;
@@ -1264,6 +1302,7 @@ gst_x264_enc_header_buf (GstX264Enc * encoder)
nal_size = nal[sps_ni].i_payload - 4;
memcpy (buffer + i_size + 2, nal[sps_ni].p_payload + 4, nal_size);
+
GST_WRITE_UINT16_BE (buffer + i_size, nal_size);
i_size += nal_size + 2;
@@ -1271,6 +1310,7 @@ gst_x264_enc_header_buf (GstX264Enc * encoder)
nal_size = nal[pps_ni].i_payload - 4;
memcpy (buffer + i_size + 2, nal[pps_ni].p_payload + 4, nal_size);
+
GST_WRITE_UINT16_BE (buffer + i_size, nal_size);
i_size += nal_size + 2;
@@ -1287,22 +1327,13 @@ gst_x264_enc_header_buf (GstX264Enc * encoder)
* Returns: TRUE on success.
*/
static gboolean
-gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstPad * pad, GstCaps * caps)
+gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstCaps * caps)
{
- GstBuffer *buf;
GstCaps *outcaps;
GstStructure *structure;
- gboolean res;
-
- outcaps = gst_caps_new_simple ("video/x-h264",
- "width", G_TYPE_INT, GST_VIDEO_INFO_WIDTH (&encoder->info),
- "height", G_TYPE_INT, GST_VIDEO_INFO_HEIGHT (&encoder->info),
- "framerate", GST_TYPE_FRACTION, GST_VIDEO_INFO_FPS_N (&encoder->info),
- GST_VIDEO_INFO_FPS_D (&encoder->info),
- "pixel-aspect-ratio", GST_TYPE_FRACTION,
- GST_VIDEO_INFO_PAR_N (&encoder->info),
- GST_VIDEO_INFO_PAR_D (&encoder->info), NULL);
+ GstVideoCodecState *state;
+ outcaps = gst_caps_new_empty_simple ("video/x-h264");
structure = gst_caps_get_structure (outcaps, 0);
if (encoder->current_byte_stream == GST_X264_ENC_STREAM_FORMAT_FROM_PROPERTY) {
@@ -1313,7 +1344,7 @@ gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstPad * pad, GstCaps * caps)
}
}
if (encoder->current_byte_stream == GST_X264_ENC_STREAM_FORMAT_AVC) {
- buf = gst_x264_enc_header_buf (encoder);
+ GstBuffer *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);
@@ -1330,45 +1361,59 @@ gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstPad * pad, GstCaps * caps)
return FALSE;
}
- res = gst_pad_set_caps (pad, outcaps);
- gst_caps_unref (outcaps);
+ state = gst_video_encoder_set_output_state (GST_VIDEO_ENCODER (encoder),
+ outcaps, encoder->input_state);
+ GST_DEBUG ("here are the caps: %" GST_PTR_FORMAT, state->caps);
+ gst_video_codec_state_unref (state);
+
+ return TRUE;
+}
+
+static void
+gst_x264_enc_set_latency (GstX264Enc * encoder)
+{
+ GstVideoInfo *info = &encoder->input_state->info;
+
+ if (info->fps_n) {
+ GstClockTime latency;
+ gint max_delayed_frames;
+ max_delayed_frames = x264_encoder_maximum_delayed_frames (encoder->x264enc);
+ latency = gst_util_uint64_scale_ceil (GST_SECOND * info->fps_d,
+ max_delayed_frames, info->fps_n);
+
+ GST_INFO ("Updating latency to %" GST_TIME_FORMAT " (%d frames)",
+ GST_TIME_ARGS (latency), max_delayed_frames);
- return res;
+ gst_video_encoder_set_latency (GST_VIDEO_ENCODER (encoder), latency,
+ latency);
+ } else {
+ /* We can't do live as we don't know our latency */
+ gst_video_encoder_set_latency (GST_VIDEO_ENCODER (encoder),
+ GST_CLOCK_TIME_NONE, GST_CLOCK_TIME_NONE);
+ }
}
static gboolean
-gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
+gst_x264_enc_set_format (GstVideoEncoder * video_enc,
+ GstVideoCodecState * state)
{
- GstX264Enc *encoder = GST_X264_ENC (GST_OBJECT_PARENT (pad));
- GstVideoInfo info;
- gint width, height;
- gint fps_n, fps_d;
- gint par_n, par_d;
- GstCaps *peer_caps;
+ GstX264Enc *encoder = GST_X264_ENC (video_enc);
+ GstVideoInfo *info = &state->info;
GstCaps *allowed_caps = NULL;
gboolean level_ok = TRUE;
- /* get info from caps */
- if (!gst_video_info_from_caps (&info, caps))
- goto invalid_caps;
-
- width = GST_VIDEO_INFO_WIDTH (&info);
- height = GST_VIDEO_INFO_HEIGHT (&info);
- fps_n = GST_VIDEO_INFO_FPS_N (&info);
- fps_d = GST_VIDEO_INFO_FPS_D (&info);
- par_n = GST_VIDEO_INFO_PAR_N (&info);
- par_d = GST_VIDEO_INFO_PAR_D (&info);
-
/* If the encoder is initialized, do not reinitialize it again if not
* necessary */
if (encoder->x264enc) {
- if (width == GST_VIDEO_INFO_WIDTH (&encoder->info) &&
- height == GST_VIDEO_INFO_HEIGHT (&encoder->info) &&
- fps_n == GST_VIDEO_INFO_FPS_N (&encoder->info) &&
- fps_d == GST_VIDEO_INFO_FPS_D (&encoder->info) &&
- par_n == GST_VIDEO_INFO_PAR_N (&encoder->info) &&
- par_d == GST_VIDEO_INFO_PAR_D (&encoder->info))
+ GstVideoInfo *old = &encoder->input_state->info;
+
+ if (info->width == old->width && info->height == old->height
+ && info->fps_n == old->fps_n && info->fps_d == old->fps_d
+ && info->par_n == old->par_n && info->par_d == old->par_d) {
+ gst_video_codec_state_unref (encoder->input_state);
+ encoder->input_state = gst_video_codec_state_ref (state);
return TRUE;
+ }
/* clear out pending frames */
gst_x264_enc_flush_frames (encoder, TRUE);
@@ -1376,46 +1421,15 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
encoder->sps_id++;
}
- /* store input description */
- encoder->info = info;
+ if (encoder->input_state)
+ gst_video_codec_state_unref (state);
+ encoder->input_state = gst_video_codec_state_ref (state);
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_query_caps (encoder->srcpad, NULL);
- 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) {
- GstCaps *template_caps;
-
- template_caps = gst_pad_get_pad_template_caps (encoder->srcpad);
-
- allowed_caps = gst_caps_intersect (peer_caps, template_caps);
- gst_caps_unref (template_caps);
- }
-
- gst_caps_unref (peer_caps);
- }
-
- /* Replace the bit since FIXME with this
- * allowed_caps = gst_pad_get_allowed_caps (encoder->srcpad);
- */
+ allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (encoder));
if (allowed_caps) {
GstStructure *s;
@@ -1428,9 +1442,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
return FALSE;
}
- allowed_caps = gst_caps_fixate (allowed_caps);
-
allowed_caps = gst_caps_make_writable (allowed_caps);
+ allowed_caps = gst_caps_fixate (allowed_caps);
s = gst_caps_get_structure (allowed_caps, 0);
profile = gst_structure_get_string (s, "profile");
@@ -1464,8 +1477,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
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 mb_width = (info->width + 15) / 16;
+ int mb_height = (info->height + 15) / 16;
int mbs = mb_width * mb_height;
if (x264_levels[i].frame_size < mbs ||
@@ -1477,7 +1490,8 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
break;
}
- if (fps_d && x264_levels[i].mbps < (gint64) mbs * fps_n / fps_d) {
+ if (info->fps_d && x264_levels[i].mbps
+ < (gint64) mbs * info->fps_n / info->fps_d) {
GST_WARNING_OBJECT (encoder,
"Macroblock rate higher than level %s allows", level);
level_ok = FALSE;
@@ -1514,261 +1528,98 @@ gst_x264_enc_sink_set_caps (GstPad * pad, GstCaps * caps)
if (!gst_x264_enc_init_encoder (encoder))
return FALSE;
- if (!gst_x264_enc_set_src_caps (encoder, encoder->srcpad, caps)) {
+ if (!gst_x264_enc_set_src_caps (encoder, state->caps)) {
gst_x264_enc_close_encoder (encoder);
return FALSE;
}
- return TRUE;
+ gst_x264_enc_set_latency (encoder);
- /* ERRORS */
-invalid_caps:
- {
- GST_ERROR_OBJECT (encoder, "invalid caps");
- return FALSE;
- }
+ return TRUE;
}
-static GstCaps *
-gst_x264_enc_sink_get_caps (GstPad * pad, GstCaps * filter)
+static GstFlowReturn
+gst_x264_enc_finish (GstVideoEncoder * encoder)
{
- GstX264Enc *encoder;
- GstPad *peer;
- GstCaps *caps, *current;
- GstCaps *templcaps;
-
- encoder = GST_X264_ENC (gst_pad_get_parent (pad));
- if (!encoder)
- return gst_caps_new_empty ();
-
- templcaps = gst_pad_get_pad_template_caps (pad);
-
- peer = gst_pad_get_peer (encoder->srcpad);
- if (peer) {
- GstCaps *peercaps;
- guint i, n;
-
- peercaps = gst_pad_query_caps (peer, NULL);
-
- /* 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");
- gst_structure_remove_field (s, "stream-format");
- gst_structure_remove_field (s, "alignment");
- }
-
- caps = gst_caps_intersect (peercaps, templcaps);
- gst_caps_unref (peercaps);
- gst_caps_unref (templcaps);
- gst_object_unref (peer);
- peer = NULL;
- } else {
- caps = templcaps;
- }
-
- /* If we already have caps return them */
- current = gst_pad_get_current_caps (pad);
- if (current) {
- if (gst_caps_can_intersect (current, caps)) {
- caps = gst_caps_merge (current, caps);
- } else {
- gst_caps_unref (current);
- }
- }
-
- gst_object_unref (encoder);
-
- return caps;
+ gst_x264_enc_flush_frames (GST_X264_ENC (encoder), TRUE);
+ return GST_FLOW_OK;
}
static gboolean
-gst_x264_enc_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
+gst_x264_enc_propose_allocation (GstVideoEncoder * encoder, GstQuery * query)
{
- gboolean ret = TRUE;
- GstX264Enc *encoder;
- gboolean forward = TRUE;
-
- encoder = GST_X264_ENC (parent);
+ gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL);
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CUSTOM_UPSTREAM:{
- guint count;
- gboolean all_headers;
-
- if (!gst_video_event_is_force_key_unit (event))
- goto out;
-
- GST_OBJECT_LOCK (encoder);
- gst_video_event_parse_upstream_force_key_unit (event,
- &encoder->pending_key_unit_ts, &all_headers, &count);
- GST_INFO_OBJECT (encoder, "received upstream force-key-unit event, "
- "seqnum %d running_time %" GST_TIME_FORMAT " all_headers %d count %d",
- gst_event_get_seqnum (event),
- GST_TIME_ARGS (encoder->pending_key_unit_ts), all_headers, count);
-
- gst_event_replace (&encoder->force_key_unit_event, event);
- gst_event_unref (event);
- GST_OBJECT_UNLOCK (encoder);
- forward = FALSE;
- break;
- }
- default:
- break;
- }
-
-out:
- if (forward)
- ret = gst_pad_push_event (encoder->sinkpad, event);
-
- return ret;
+ return GST_VIDEO_ENCODER_CLASS (parent_class)->propose_allocation (encoder,
+ query);
}
static gboolean
-gst_x264_enc_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
+gst_x264_enc_sink_event (GstVideoEncoder * encoder, GstEvent * event)
{
- gboolean ret = FALSE, forward = TRUE;
- GstX264Enc *encoder;
-
- encoder = GST_X264_ENC (parent);
-
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CAPS:
- {
- GstCaps *caps;
-
- gst_event_parse_caps (event, &caps);
- ret = gst_x264_enc_sink_set_caps (pad, caps);
- forward = FALSE;
- break;
- }
- case GST_EVENT_SEGMENT:
- gst_event_copy_segment (event, &encoder->segment);
- break;
- case GST_EVENT_FLUSH_STOP:
- gst_segment_init (&encoder->segment, GST_FORMAT_UNDEFINED);
- break;
- 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);
+ tags = gst_tag_list_copy (tags);
+
+ gst_event_take (&event, gst_event_new_tag (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:{
- guint count;
- gboolean all_headers;
-
- if (!gst_video_event_is_force_key_unit (event))
- break;
-
- GST_OBJECT_LOCK (encoder);
-
- gst_video_event_parse_downstream_force_key_unit (event, NULL, NULL,
- &encoder->pending_key_unit_ts, &all_headers, &count);
- GST_INFO_OBJECT (encoder, "received downstream force-key-unit event, "
- "seqnum %d running_time %" GST_TIME_FORMAT " all_headers %d count %d",
- gst_event_get_seqnum (event),
- GST_TIME_ARGS (encoder->pending_key_unit_ts), all_headers, count);
-
- gst_event_replace (&encoder->force_key_unit_event, event);
- gst_event_unref (event);
- GST_OBJECT_UNLOCK (encoder);
break;
}
default:
break;
}
- if (forward)
- ret = gst_pad_push_event (encoder->srcpad, event);
- else
- gst_event_unref (event);
-
- return ret;
-}
-
-static gboolean
-gst_x264_enc_sink_query (GstPad * pad, GstObject * parent, GstQuery * query)
-{
- gboolean ret = FALSE;
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_CAPS:
- {
- GstCaps *filter, *caps;
-
- gst_query_parse_caps (query, &filter);
- caps = gst_x264_enc_sink_get_caps (pad, filter);
- gst_query_set_caps_result (query, caps);
- gst_caps_unref (caps);
- ret = TRUE;
- break;
- }
- default:
- ret = gst_pad_query_default (pad, parent, query);
- break;
- }
-
- return ret;
+ return GST_VIDEO_ENCODER_CLASS (parent_class)->sink_event (encoder, event);
}
/* chain function
* this function does the actual processing
*/
static GstFlowReturn
-gst_x264_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+gst_x264_enc_handle_frame (GstVideoEncoder * video_enc,
+ GstVideoCodecFrame * frame)
{
- GstX264Enc *encoder = GST_X264_ENC (parent);
+ GstX264Enc *encoder = GST_X264_ENC (video_enc);
+ GstVideoInfo *info = &encoder->input_state->info;
GstFlowReturn ret;
x264_picture_t pic_in;
gint i_nal, i;
- GstVideoFrame frame;
+ FrameData *fdata;
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 (!gst_video_frame_map (&frame, &encoder->info, buf, GST_MAP_READ))
- goto wrong_video_frame;
-
- /* remember the timestamp and duration */
- g_queue_push_tail (encoder->delay, buf);
/* set up input picture */
memset (&pic_in, 0, sizeof (pic_in));
+ fdata = gst_x264_enc_queue_frame (encoder, frame, info);
+ if (!fdata)
+ goto invalid_frame;
+
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_VIDEO_FRAME_COMP_DATA (&frame, i);
- pic_in.img.i_stride[i] = GST_VIDEO_FRAME_COMP_STRIDE (&frame, i);
+ pic_in.img.plane[i] = GST_VIDEO_FRAME_PLANE_DATA (&fdata->vframe, i);
+ pic_in.img.i_stride[i] = GST_VIDEO_FRAME_COMP_STRIDE (&fdata->vframe, i);
}
pic_in.i_type = X264_TYPE_AUTO;
- pic_in.i_dts = GST_BUFFER_DTS (buf);
- pic_in.i_pts = GST_BUFFER_PTS (buf);
-
- ret = gst_x264_enc_encode_frame (encoder, &pic_in, &i_nal, TRUE);
+ pic_in.i_pts = frame->pts;
+ pic_in.i_dts = frame->dts;
+ pic_in.opaque = GINT_TO_POINTER (frame->system_frame_number);
- gst_video_frame_unmap (&frame);
+ ret = gst_x264_enc_encode_frame (encoder, &pic_in, frame, &i_nal, TRUE);
/* input buffer is released later on */
return ret;
@@ -1777,88 +1628,46 @@ gst_x264_enc_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
not_inited:
{
GST_WARNING_OBJECT (encoder, "Got buffer before set_caps was called");
- gst_buffer_unref (buf);
return GST_FLOW_NOT_NEGOTIATED;
}
-wrong_video_frame:
+invalid_frame:
{
- GST_ELEMENT_ERROR (encoder, STREAM, ENCODE,
- ("Encode x264 frame failed."), ("Could not map video frame"));
- gst_buffer_unref (buf);
+ GST_ERROR_OBJECT (encoder, "Failed to map frame");
return GST_FLOW_ERROR;
}
}
-static GstEvent *
-check_pending_key_unit_event (GstEvent * pending_event, GstSegment * segment,
- GstClockTime timestamp, GstClockTime pending_key_unit_ts)
-{
- GstClockTime running_time, stream_time;
- gboolean all_headers;
- guint count;
- GstEvent *event = NULL;
-
- g_return_val_if_fail (pending_event != NULL, NULL);
- g_return_val_if_fail (segment != NULL, NULL);
-
- if (pending_event == NULL || timestamp == GST_CLOCK_TIME_NONE)
- goto out;
-
- running_time = gst_segment_to_running_time (segment,
- GST_FORMAT_TIME, timestamp);
-
- GST_INFO ("now %" GST_TIME_FORMAT " wanted %" GST_TIME_FORMAT,
- GST_TIME_ARGS (running_time), GST_TIME_ARGS (pending_key_unit_ts));
-
- if (running_time < pending_key_unit_ts)
- goto out;
-
- stream_time = gst_segment_to_stream_time (segment,
- GST_FORMAT_TIME, timestamp);
-
- gst_video_event_parse_upstream_force_key_unit (pending_event,
- NULL, &all_headers, &count);
-
- event =
- gst_video_event_new_downstream_force_key_unit (timestamp, stream_time,
- running_time, all_headers, count);
- gst_event_set_seqnum (event, gst_event_get_seqnum (pending_event));
-
-out:
- return event;
-}
-
static GstFlowReturn
gst_x264_enc_encode_frame (GstX264Enc * encoder, x264_picture_t * pic_in,
- int *i_nal, gboolean send)
+ GstVideoCodecFrame * input_frame, int *i_nal, gboolean send)
{
- GstFlowReturn ret;
- GstBuffer *out_buf = NULL, *in_buf = NULL;
+ GstVideoCodecFrame *frame = NULL;
+ GstBuffer *out_buf = NULL;
x264_picture_t pic_out;
x264_nal_t *nal;
int i_size;
int encoder_return;
- GstClockTime duration;
+ GstFlowReturn ret = GST_FLOW_OK;
guint8 *data;
- GstEvent *event = NULL;
+ gboolean update_latency = FALSE;
- if (G_UNLIKELY (encoder->x264enc == NULL))
+ if (G_UNLIKELY (encoder->x264enc == NULL)) {
+ if (input_frame)
+ gst_video_codec_frame_unref (input_frame);
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");
+ update_latency = TRUE;
}
- if (encoder->pending_key_unit_ts != GST_CLOCK_TIME_NONE && pic_in != NULL) {
- event = check_pending_key_unit_event (encoder->force_key_unit_event,
- &encoder->segment, pic_in->i_pts, encoder->pending_key_unit_ts);
- if (event) {
- encoder->pending_key_unit_ts = GST_CLOCK_TIME_NONE;
- gst_event_replace (&encoder->force_key_unit_event, NULL);
-
+ if (pic_in && input_frame) {
+ if (GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (input_frame)) {
+ GST_INFO ("Forcing key frame");
if (encoder->intra_refresh)
x264_encoder_intra_refresh (encoder->x264enc);
else
@@ -1867,75 +1676,68 @@ gst_x264_enc_encode_frame (GstX264Enc * encoder, x264_picture_t * pic_in,
}
GST_OBJECT_UNLOCK (encoder);
+ if (G_UNLIKELY (update_latency))
+ gst_x264_enc_set_latency (encoder);
+
encoder_return = x264_encoder_encode (encoder->x264enc,
&nal, i_nal, pic_in, &pic_out);
- if (encoder_return < 0)
- goto encode_failed;
+ if (encoder_return < 0) {
+ GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 frame failed."),
+ ("x264_encoder_encode return code=%d", encoder_return));
+ ret = GST_FLOW_ERROR;
+ /* Make sure we finish this frame */
+ frame = input_frame;
+ goto out;
+ }
+
+ /* Input frame is now queued */
+ if (input_frame)
+ gst_video_codec_frame_unref (input_frame);
if (!*i_nal) {
ret = GST_FLOW_OK;
goto out;
}
+
i_size = encoder_return;
data = nal[0].p_payload;
- 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."));
- ret = GST_FLOW_ERROR;
- goto out;
- }
+ frame = gst_video_encoder_get_frame (GST_VIDEO_ENCODER (encoder),
+ GPOINTER_TO_INT (pic_out.opaque));
+ g_assert (frame || !send);
- if (!send) {
+ if (!send || !frame) {
ret = GST_FLOW_OK;
goto out;
}
out_buf = gst_buffer_new_allocate (NULL, i_size, NULL);
gst_buffer_fill (out_buf, 0, data, i_size);
+ frame->output_buffer = out_buf;
GST_LOG_OBJECT (encoder,
"output: dts %" G_GINT64_FORMAT " pts %" G_GINT64_FORMAT,
(gint64) pic_out.i_dts, (gint64) pic_out.i_pts);
if (pic_out.i_dts < 0)
- GST_BUFFER_DTS (out_buf) = GST_CLOCK_TIME_NONE;
+ frame->dts = GST_CLOCK_TIME_NONE;
else
- GST_BUFFER_DTS (out_buf) = pic_out.i_dts;
-
- GST_BUFFER_PTS (out_buf) = pic_out.i_pts;
- GST_BUFFER_DURATION (out_buf) = duration;
+ frame->dts = pic_out.i_dts;
+ frame->pts = pic_out.i_pts;
if (pic_out.b_keyframe) {
- GST_BUFFER_FLAG_UNSET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT);
- } else {
- GST_BUFFER_FLAG_SET (out_buf, GST_BUFFER_FLAG_DELTA_UNIT);
+ GST_INFO ("Output keyframe");
+ GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
}
- if (event)
- gst_pad_push_event (encoder->srcpad, gst_event_ref (event));
-
- ret = gst_pad_push (encoder->srcpad, out_buf);
-
out:
- if (event)
- gst_event_unref (event);
+ if (frame) {
+ gst_x264_enc_dequeue_frame (encoder, frame);
+ gst_video_encoder_finish_frame (GST_VIDEO_ENCODER (encoder), frame);
+ }
return ret;
-
- /* ERRORS */
-encode_failed:
- {
- GST_ELEMENT_ERROR (encoder, STREAM, ENCODE, ("Encode x264 frame failed."),
- ("x264_encoder_encode return code=%d", encoder_return));
- ret = GST_FLOW_ERROR;
- goto out;
- }
}
static void
@@ -1947,41 +1749,17 @@ gst_x264_enc_flush_frames (GstX264Enc * encoder, gboolean send)
/* first send the remaining frames */
if (encoder->x264enc)
do {
- flow_ret = gst_x264_enc_encode_frame (encoder, NULL, &i_nal, send);
+ flow_ret = gst_x264_enc_encode_frame (encoder, NULL, NULL, &i_nal, send);
} while (flow_ret == GST_FLOW_OK
&& x264_encoder_delayed_frames (encoder->x264enc) > 0);
-
- /* 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)
+static gboolean
+gst_x264_enc_stop (GstVideoEncoder * encoder)
{
- GstX264Enc *encoder = GST_X264_ENC (element);
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-
- ret = GST_ELEMENT_CLASS (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;
+ return gst_x264_enc_reset (encoder, TRUE);
}
-
-
static void
gst_x264_enc_reconfig (GstX264Enc * encoder)
{
diff --git a/ext/x264/gstx264enc.h b/ext/x264/gstx264enc.h
index fc32304..0cf2e55 100644
--- a/ext/x264/gstx264enc.h
+++ b/ext/x264/gstx264enc.h
@@ -23,6 +23,7 @@
#include <gst/gst.h>
#include <gst/video/video.h>
+#include <gst/video/gstvideoencoder.h>
#include "_stdint.h"
#include <x264.h>
@@ -44,17 +45,17 @@ typedef struct _GstX264EncClass GstX264EncClass;
struct _GstX264Enc
{
- GstElement element;
+ GstVideoEncoder element;
/*< private >*/
- GstPad *sinkpad;
- GstPad *srcpad;
- GstSegment segment;
-
x264_t *x264enc;
x264_param_t x264param;
gint current_byte_stream;
+ /* List of frame/buffer mapping structs for
+ * pending frames */
+ GList *pending_frames;
+
/* properties */
guint threads;
gboolean sliced_threads;
@@ -97,13 +98,7 @@ struct _GstX264Enc
GString *option_string; /* used by set prop */
/* input description */
- GstVideoInfo info;
-
- /* for b-frame delay handling */
- GQueue *delay;
-
- guint8 *buffer;
- gulong buffer_size;
+ GstVideoCodecState *input_state;
/* configuration changed while playing */
gboolean reconfig;
@@ -112,14 +107,11 @@ struct _GstX264Enc
const gchar *peer_profile;
gboolean peer_intra_profile;
const x264_level_t *peer_level;
-
- GstClockTime pending_key_unit_ts;
- GstEvent *force_key_unit_event;
};
struct _GstX264EncClass
{
- GstElementClass parent_class;
+ GstVideoEncoderClass parent_class;
};
GType gst_x264_enc_get_type (void);
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index 321be07..15b2ac0 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -207,7 +207,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index 71c7947..6fe846a 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -172,7 +172,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst-plugins-ugly.doap b/gst-plugins-ugly.doap
index c347153..865e796 100644
--- a/gst-plugins-ugly.doap
+++ b/gst-plugins-ugly.doap
@@ -35,6 +35,16 @@ might be widely known to present patent problems.
<release>
<Version>
+ <revision>0.11.93</revision>
+ <branch>0.11</branch>
+ <name>Rag Doll Physics</name>
+ <created>2012-08-08</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.11.93.tar.xz" />
+ </Version>
+ </release>
+
+ <release>
+ <Version>
<revision>0.11.92</revision>
<branch>0.11</branch>
<name>Hey You</name>
diff --git a/gst-plugins-ugly.spec b/gst-plugins-ugly.spec
index 6213a8b..6a12bcf 100644
--- a/gst-plugins-ugly.spec
+++ b/gst-plugins-ugly.spec
@@ -4,7 +4,7 @@
%define gst_minver 0.11.0
Name: %{gstreamer}-plugins-ugly
-Version: 0.11.92
+Version: 0.11.93
Release: 1.gst
Summary: GStreamer streaming media framework "ugly" plug-ins
diff --git a/gst/Makefile.in b/gst/Makefile.in
index c33e0d7..297d347 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -212,7 +212,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst/asfdemux/Makefile.in b/gst/asfdemux/Makefile.in
index 954f670..9be8ff0 100644
--- a/gst/asfdemux/Makefile.in
+++ b/gst/asfdemux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -238,7 +238,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c
index ca6a6e1..f9b13fb 100644
--- a/gst/asfdemux/asfpacket.c
+++ b/gst/asfdemux/asfpacket.c
@@ -60,6 +60,7 @@ asf_packet_read_varlen_int (guint lentype_flags, guint lentype_bit_offset,
val = GST_READ_UINT32_LE (*p_data);
break;
default:
+ val = 0;
g_assert_not_reached ();
}
@@ -132,6 +133,12 @@ gst_asf_payload_queue_for_stream (GstASFDemux * demux, AsfPayload * payload,
{
GST_DEBUG_OBJECT (demux, "Got payload for stream %d ts:%" GST_TIME_FORMAT,
stream->id, GST_TIME_ARGS (payload->ts));
+
+ /* Before preroll ts might be invalid and set to 0 */
+ if (G_UNLIKELY (payload->ts == 0 && demux->preroll)) {
+ payload->ts = GST_CLOCK_TIME_NONE;
+ }
+
/* 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))) {
@@ -141,7 +148,9 @@ gst_asf_payload_queue_for_stream (GstASFDemux * demux, AsfPayload * payload,
}
/* make timestamps start from 0 */
- if (G_LIKELY (demux->first_ts < payload->ts))
+ if (G_LIKELY (GST_CLOCK_TIME_IS_VALID (demux->first_ts) &&
+ GST_CLOCK_TIME_IS_VALID (payload->ts) &&
+ demux->first_ts < payload->ts))
payload->ts -= demux->first_ts;
else
payload->ts = 0;
@@ -493,14 +502,14 @@ gst_asf_demux_parse_payload (GstASFDemux * demux, AsfPacket * packet,
return TRUE;
}
-gboolean
+GstAsfDemuxParsePacketError
gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
{
AsfPacket packet = { 0, };
GstMapInfo map;
const guint8 *data;
gboolean has_multiple_payloads;
- gboolean ret = TRUE;
+ GstAsfDemuxParsePacketError ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE;
guint8 ec_flags, flags1;
guint size;
@@ -510,8 +519,11 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * 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;
+ if (G_UNLIKELY (size < 2 + 4 + 2)) {
+ GST_WARNING_OBJECT (demux, "Packet size is < 8");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
+ }
packet.buf = buf;
/* evidently transient */
@@ -534,8 +546,11 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
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;
+ if (size <= (1 + ec_len) + 2 + 4 + 2) {
+ GST_WARNING_OBJECT (demux, "Packet size is < 8 with Error Correction");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ goto done;
+ }
data += 1 + ec_len;
size -= 1 + ec_len;
@@ -556,8 +571,11 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
packet.padding = asf_packet_read_varlen_int (flags1, 3, &data, &size);
- if (G_UNLIKELY (size < 6))
- goto short_packet;
+ if (G_UNLIKELY (size < 6)) {
+ GST_WARNING_OBJECT (demux, "Packet size is < 6");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
+ goto done;
+ }
packet.send_time = GST_READ_UINT32_LE (data) * GST_MSECOND;
packet.duration = GST_READ_UINT16_LE (data + 4) * GST_MSECOND;
@@ -575,8 +593,11 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
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;
+ if (G_UNLIKELY (packet.padding == (guint) - 1 || size < packet.padding)) {
+ GST_WARNING_OBJECT (demux, "No padding, or padding bigger than buffer");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
+ }
size -= packet.padding;
@@ -588,7 +609,9 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
"adjusting available data size");
if (size < demux->packet_size - packet.length) {
/* the buffer is smaller than the implicit padding */
- goto short_packet;
+ GST_WARNING_OBJECT (demux, "Buffer is smaller than the implicit padding");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
} else {
/* subtract the implicit padding */
size -= (demux->packet_size - packet.length);
@@ -598,8 +621,11 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
if (has_multiple_payloads) {
guint i, num, lentype;
- if (G_UNLIKELY (size < 1))
- goto short_packet;
+ if (G_UNLIKELY (size < 1)) {
+ GST_WARNING_OBJECT (demux, "No room more in buffer");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ goto done;
+ }
num = (GST_READ_UINT8 (data) & 0x3F) >> 0;
lentype = (GST_READ_UINT8 (data) & 0xC0) >> 6;
@@ -613,26 +639,23 @@ gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf)
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)) {
+ if (G_UNLIKELY (!gst_asf_demux_parse_payload (demux, &packet, lentype,
+ &data, &size))) {
GST_WARNING_OBJECT (demux, "Failed to parse payload %u/%u", i + 1, num);
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL;
break;
}
}
} else {
GST_LOG_OBJECT (demux, "Parsing single payload");
- ret = gst_asf_demux_parse_payload (demux, &packet, -1, &data, &size);
+ if (G_UNLIKELY (!gst_asf_demux_parse_payload (demux, &packet, -1, &data,
+ &size))) {
+ GST_WARNING_OBJECT (demux, "Failed to parse payload");
+ ret = GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE;
+ }
}
+done:
gst_buffer_unmap (buf, &map);
return ret;
-
-/* ERRORS */
-short_packet:
- {
- gst_buffer_unmap (buf, &map);
- GST_WARNING_OBJECT (demux, "Short packet!");
- return FALSE;
- }
}
diff --git a/gst/asfdemux/asfpacket.h b/gst/asfdemux/asfpacket.h
index a1722c8..99655f7 100644
--- a/gst/asfdemux/asfpacket.h
+++ b/gst/asfdemux/asfpacket.h
@@ -57,7 +57,13 @@ typedef struct {
guint8 prop_flags; /* payload length types */
} AsfPacket;
-gboolean gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf);
+typedef enum {
+ GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE,
+ GST_ASF_DEMUX_PARSE_PACKET_ERROR_RECOVERABLE,
+ GST_ASF_DEMUX_PARSE_PACKET_ERROR_FATAL
+} GstAsfDemuxParsePacketError;
+
+GstAsfDemuxParsePacketError gst_asf_demux_parse_packet (GstASFDemux * demux, GstBuffer * buf);
#define gst_asf_payload_is_complete(payload) \
((payload)->buf_filled >= (payload)->mo_size)
diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c
index 51c421e..eb41a50 100644
--- a/gst/asfdemux/gstasfdemux.c
+++ b/gst/asfdemux/gstasfdemux.c
@@ -143,7 +143,7 @@ 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);
+ gst_tag_list_unref (stream->pending_tags);
stream->pending_tags = NULL;
}
if (stream->pad) {
@@ -186,7 +186,7 @@ gst_asf_demux_reset (GstASFDemux * demux, gboolean chain_reset)
demux->adapter = NULL;
}
if (demux->taglist) {
- gst_tag_list_free (demux->taglist);
+ gst_tag_list_unref (demux->taglist);
demux->taglist = NULL;
}
if (demux->metadata) {
@@ -337,7 +337,7 @@ gst_asf_demux_activate_mode (GstPad * sinkpad, GstObject * parent,
demux->streaming = FALSE;
res = gst_pad_start_task (sinkpad, (GstTaskFunction) gst_asf_demux_loop,
- demux);
+ demux, NULL);
} else {
res = gst_pad_stop_task (sinkpad);
}
@@ -644,8 +644,9 @@ gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
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");
+ if (stop_type != GST_SEEK_TYPE_NONE &&
+ (stop_type != GST_SEEK_TYPE_SET || GST_CLOCK_TIME_IS_VALID (stop))) {
+ GST_LOG_OBJECT (demux, "streaming; end position must be NONE");
return FALSE;
}
gst_event_ref (event);
@@ -763,7 +764,7 @@ gst_asf_demux_handle_seek_event (GstASFDemux * demux, GstEvent * event)
skip:
/* 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);
+ demux, NULL);
/* streaming can continue now */
GST_PAD_STREAM_UNLOCK (demux->sinkpad);
@@ -1431,15 +1432,17 @@ gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
gst_event_new_segment (&demux->segment));
/* now post any global tags we may have found */
- if (demux->taglist == NULL)
+ if (demux->taglist == NULL) {
demux->taglist = gst_tag_list_new_empty ();
+ gst_tag_list_set_scope (demux->taglist, GST_TAG_SCOPE_GLOBAL);
+ }
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_asf_demux_send_event_unlocked (demux,
- gst_event_new_tag ("GstDemuxer", demux->taglist));
+ gst_event_new_tag (demux->taglist));
demux->taglist = NULL;
demux->need_newsegment = FALSE;
@@ -1450,7 +1453,7 @@ gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
if (G_UNLIKELY (stream->pending_tags)) {
GST_LOG_OBJECT (stream->pad, "%" GST_PTR_FORMAT, stream->pending_tags);
gst_pad_push_event (stream->pad,
- gst_event_new_tag ("GstDemuxer", stream->pending_tags));
+ gst_event_new_tag (stream->pending_tags));
stream->pending_tags = NULL;
}
@@ -1491,8 +1494,8 @@ gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
payload->interlaced);
stream->interlaced = payload->interlaced;
stream->caps = gst_caps_make_writable (stream->caps);
- gst_caps_set_simple (stream->caps, "interlaced", G_TYPE_BOOLEAN,
- stream->interlaced, NULL);
+ gst_caps_set_simple (stream->caps, "interlace-mode", G_TYPE_BOOLEAN,
+ (stream->interlaced ? "mixed" : "progressive"), NULL);
gst_pad_set_caps (stream->pad, stream->caps);
}
@@ -1516,8 +1519,13 @@ gst_asf_demux_push_complete_payloads (GstASFDemux * demux, gboolean force)
GST_TIME_ARGS (GST_BUFFER_DURATION (payload->buf)),
gst_buffer_get_size (payload->buf));
- ret = gst_pad_push (stream->pad, payload->buf);
- ret = gst_asf_demux_aggregate_flow_return (demux, stream, ret);
+ if (stream->active) {
+ ret = gst_pad_push (stream->pad, payload->buf);
+ ret = gst_asf_demux_aggregate_flow_return (demux, stream, ret);
+ } else {
+ gst_buffer_unref (payload->buf);
+ ret = GST_FLOW_OK;
+ }
payload->buf = NULL;
g_array_remove_index (stream->payloads, 0);
@@ -1621,9 +1629,9 @@ gst_asf_demux_loop (GstASFDemux * demux)
}
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? */
- if (G_UNLIKELY (!gst_asf_demux_parse_packet (demux, buf))) {
+ GstAsfDemuxParsePacketError err;
+ err = gst_asf_demux_parse_packet (demux, buf);
+ if (G_UNLIKELY (err != GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE)) {
/* when we don't know when the data object ends, we should check
* for a chained asf */
if (demux->num_packets == 0) {
@@ -1635,7 +1643,13 @@ gst_asf_demux_loop (GstASFDemux * demux)
return;
}
}
- goto parse_error;
+ /* FIXME: We should tally up fatal errors and error out only
+ * after a few broken packets in a row? */
+
+ GST_INFO_OBJECT (demux, "Ignoring recoverable parse error");
+ gst_buffer_unref (buf);
+ ++demux->packet;
+ return;
}
flow = gst_asf_demux_push_complete_payloads (demux, FALSE);
@@ -1646,13 +1660,13 @@ gst_asf_demux_loop (GstASFDemux * demux)
guint n;
for (n = 0; n < demux->speed_packets; n++) {
GstBuffer *sub;
+ GstAsfDemuxParsePacketError err;
sub =
- gst_buffer_copy_region (buf, GST_BUFFER_COPY_NONE,
+ gst_buffer_copy_region (buf, GST_BUFFER_COPY_ALL,
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))) {
+ err = gst_asf_demux_parse_packet (demux, sub);
+ if (G_UNLIKELY (err != GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE)) {
/* when we don't know when the data object ends, we should check
* for a chained asf */
if (demux->num_packets == 0) {
@@ -1665,12 +1679,17 @@ gst_asf_demux_loop (GstASFDemux * demux)
return;
}
}
- goto parse_error;
+ /* FIXME: We should tally up fatal errors and error out only
+ * after a few broken packets in a row? */
+
+ GST_INFO_OBJECT (demux, "Ignoring recoverable parse error");
+ flow = GST_FLOW_OK;
}
gst_buffer_unref (sub);
- flow = gst_asf_demux_push_complete_payloads (demux, FALSE);
+ if (err == GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE)
+ flow = gst_asf_demux_push_complete_payloads (demux, FALSE);
++demux->packet;
@@ -1719,6 +1738,8 @@ eos:
gst_element_post_message (GST_ELEMENT_CAST (demux),
gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
stop));
+ gst_asf_demux_send_event_unlocked (demux,
+ gst_event_new_segment_done (GST_FORMAT_TIME, stop));
} else if (flow != GST_FLOW_EOS) {
/* check if we have a chained asf, in case, we don't eos yet */
if (gst_asf_demux_check_chained_asf (demux)) {
@@ -1762,6 +1783,8 @@ read_failed:
flow = GST_FLOW_EOS;
goto pause;
}
+#if 0
+ /* See FIXMEs above */
parse_error:
{
gst_buffer_unref (buf);
@@ -1771,6 +1794,7 @@ parse_error:
flow = GST_FLOW_ERROR;
goto pause;
}
+#endif
}
#define GST_ASF_DEMUX_CHECK_HEADER_YES 0
@@ -1855,6 +1879,7 @@ gst_asf_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
while (gst_adapter_available (demux->adapter) >= data_size) {
GstBuffer *buf;
+ GstAsfDemuxParsePacketError err;
/* we don't know the length of the stream
* check for a chained asf everytime */
@@ -1875,15 +1900,16 @@ gst_asf_demux_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
buf = gst_adapter_take_buffer (demux->adapter, data_size);
- /* FIXME: maybe we should just skip broken packets and error out only
+ /* FIXME: We should tally up fatal errors 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");
- }
+ err = gst_asf_demux_parse_packet (demux, buf);
gst_buffer_unref (buf);
- ret = gst_asf_demux_push_complete_payloads (demux, FALSE);
+ if (G_LIKELY (err == GST_ASF_DEMUX_PARSE_PACKET_ERROR_NONE))
+ ret = gst_asf_demux_push_complete_payloads (demux, FALSE);
+ else
+ GST_WARNING_OBJECT (demux, "Parse error");
if (demux->packet >= 0)
++demux->packet;
@@ -2261,6 +2287,7 @@ gst_asf_demux_add_video_stream (GstASFDemux * demux,
GstBuffer *extradata = NULL;
GstPad *src_pad;
GstCaps *caps;
+ gchar *str;
gchar *name = NULL;
gchar *codec_name = NULL;
gint size_left = video->size - 40;
@@ -2315,7 +2342,9 @@ gst_asf_demux_add_video_stream (GstASFDemux * demux,
}
/* add fourcc format to caps, some proprietary decoders seem to need it */
- gst_caps_set_simple (caps, "format", G_TYPE_UINT, video->tag, NULL);
+ str = g_strdup_printf ("%" GST_FOURCC_FORMAT, GST_FOURCC_ARGS (video->tag));
+ gst_caps_set_simple (caps, "format", G_TYPE_STRING, str, NULL);
+ g_free (str);
if (codec_name) {
tags = gst_tag_list_new (GST_TAG_VIDEO_CODEC, codec_name, NULL);
@@ -2338,10 +2367,19 @@ static void
gst_asf_demux_activate_stream (GstASFDemux * demux, AsfStream * stream)
{
if (!stream->active) {
+ gchar *stream_id;
+
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);
+
+ stream_id =
+ gst_pad_create_stream_id_printf (stream->pad, GST_ELEMENT_CAST (demux),
+ "%u", stream->id);
+ gst_pad_push_event (stream->pad, gst_event_new_stream_start (stream_id));
+ g_free (stream_id);
gst_pad_set_caps (stream->pad, stream->caps);
+
gst_element_add_pad (GST_ELEMENT_CAST (demux), stream->pad);
stream->active = TRUE;
}
@@ -2518,7 +2556,7 @@ gst_asf_demux_get_gst_tag_from_tag_name (const gchar * name_utf8)
"WM/Picture", GST_TAG_IMAGE}, {
"WM/Track", GST_TAG_TRACK_NUMBER}, {
"WM/TrackNumber", GST_TAG_TRACK_NUMBER}, {
- "WM/Year", GST_TAG_DATE}
+ "WM/Year", GST_TAG_DATE_TIME}
/* { "WM/Composer", GST_TAG_COMPOSER } */
};
gsize out;
@@ -2553,14 +2591,15 @@ gst_asf_demux_add_global_tags (GstASFDemux * demux, GstTagList * taglist)
return;
if (gst_tag_list_is_empty (taglist)) {
- gst_tag_list_free (taglist);
+ gst_tag_list_unref (taglist);
return;
}
t = gst_tag_list_merge (demux->taglist, taglist, GST_TAG_MERGE_APPEND);
+ gst_tag_list_set_scope (t, GST_TAG_SCOPE_GLOBAL);
if (demux->taglist)
- gst_tag_list_free (demux->taglist);
- gst_tag_list_free (taglist);
+ gst_tag_list_unref (demux->taglist);
+ gst_tag_list_unref (taglist);
demux->taglist = t;
GST_LOG_OBJECT (demux, "global tags now: %" GST_PTR_FORMAT, demux->taglist);
}
@@ -2697,13 +2736,12 @@ gst_asf_demux_process_ext_content_desc (GstASFDemux * demux, guint8 * data,
value_utf8[out] = '\0';
if (gst_tag_name != NULL) {
- if (strcmp (gst_tag_name, GST_TAG_DATE) == 0) {
+ if (strcmp (gst_tag_name, GST_TAG_DATE_TIME) == 0) {
guint year = atoi (value_utf8);
if (year > 0) {
- /* FIXME: really want a GDateTime with just the year field */
- g_value_init (&tag_value, G_TYPE_DATE);
- g_value_take_boxed (&tag_value, g_date_new_dmy (1, 1, year));
+ g_value_init (&tag_value, GST_TYPE_DATE_TIME);
+ g_value_take_boxed (&tag_value, gst_date_time_new_y (year));
}
} else if (strcmp (gst_tag_name, GST_TAG_GENRE) == 0) {
guint id3v1_genre_id;
@@ -2819,7 +2857,7 @@ gst_asf_demux_process_ext_content_desc (GstASFDemux * demux, guint8 * data,
not_enough_data:
{
GST_WARNING ("Unexpected end of data parsing ext content desc object");
- gst_tag_list_free (taglist);
+ gst_tag_list_unref (taglist);
return GST_FLOW_OK; /* not really fatal */
}
}
diff --git a/gst/asfdemux/gstrtpasfdepay.c b/gst/asfdemux/gstrtpasfdepay.c
index 52d57d3..4a6b5ab 100644
--- a/gst/asfdemux/gstrtpasfdepay.c
+++ b/gst/asfdemux/gstrtpasfdepay.c
@@ -241,14 +241,13 @@ field_size (guint8 field)
}
}
-/*
- * Set the padding field to te correct value as the spec
+/* 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)
+static GstBuffer *
+gst_rtp_asf_depay_update_padding (GstRtpAsfDepay * depayload, GstBuffer * buf)
{
+ GstBuffer *result;
GstMapInfo map;
guint8 *data;
gint offset = 0;
@@ -256,9 +255,26 @@ gst_rtp_asf_depay_set_padding (GstRtpAsfDepay * depayload,
guint8 seq_type;
guint8 pad_type;
guint8 pkt_type;
+ gsize plen, padding;
+
+ plen = gst_buffer_get_size (buf);
+ if (plen == depayload->packet_size)
+ return buf;
+
+ padding = depayload->packet_size - plen;
+
+ GST_LOG_OBJECT (depayload,
+ "padding buffer size %" G_GSIZE_FORMAT " to packet size %d", plen,
+ depayload->packet_size);
+
+ result = gst_buffer_new_and_alloc (depayload->packet_size);
- gst_buffer_map (buf, &map, GST_MAP_READ);
+ gst_buffer_map (result, &map, GST_MAP_READ);
data = map.data;
+ memset (data + plen, 0, padding);
+
+ gst_buffer_extract (buf, 0, data, plen);
+ gst_buffer_unref (buf);
aux = data[offset++];
if (aux & 0x80) {
@@ -267,8 +283,8 @@ gst_rtp_asf_depay_set_padding (GstRtpAsfDepay * depayload,
GST_WARNING_OBJECT (depayload, "Error correction length type should be "
"set to 0");
/* this packet doesn't follow the spec */
- gst_buffer_unmap (buf, &map);
- return;
+ gst_buffer_unmap (result, &map);
+ return result;
}
err_len = aux & 0x0F;
offset += err_len;
@@ -305,7 +321,9 @@ gst_rtp_asf_depay_set_padding (GstRtpAsfDepay * depayload,
default:
break;
}
- gst_buffer_unmap (buf, &map);
+ gst_buffer_unmap (result, &map);
+
+ return result;
}
/* Docs: 'RTSP Protocol PDF' document from http://sdp.ppona.com/ (page 8) */
@@ -342,7 +360,6 @@ gst_rtp_asf_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
do {
guint packet_len;
- gsize plen;
/* packet header is at least 4 bytes */
if (payload_len < 4)
@@ -459,23 +476,7 @@ gst_rtp_asf_depay_process (GstRTPBaseDepayload * depayload, GstBuffer * buf)
if (!outbuf)
return NULL;
- /* we need to pad with zeroes to packet_size if it's smaller */
- plen = gst_buffer_get_size (outbuf);
- if (plen < depay->packet_size) {
- GstBuffer *tmp;
-
- GST_LOG_OBJECT (depay,
- "padding buffer size %" G_GSIZE_FORMAT " to packet size %d", plen,
- depay->packet_size);
-
- tmp = gst_buffer_new_and_alloc (depay->packet_size);
- gst_buffer_copy_into (tmp, outbuf, GST_BUFFER_COPY_ALL, 0, plen);
- gst_buffer_unref (outbuf);
- outbuf = tmp;
-
- gst_buffer_memset (outbuf, plen, 0, depay->packet_size - plen);
- gst_rtp_asf_depay_set_padding (depay, outbuf, depay->packet_size - plen);
- }
+ outbuf = gst_rtp_asf_depay_update_padding (depay, outbuf);
if (!S)
GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
diff --git a/gst/dvdlpcmdec/Makefile.in b/gst/dvdlpcmdec/Makefile.in
index cbf32ca..3e84480 100644
--- a/gst/dvdlpcmdec/Makefile.in
+++ b/gst/dvdlpcmdec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -234,7 +234,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst/dvdlpcmdec/gstdvdlpcmdec.c b/gst/dvdlpcmdec/gstdvdlpcmdec.c
index f97a475..b46d512 100644
--- a/gst/dvdlpcmdec/gstdvdlpcmdec.c
+++ b/gst/dvdlpcmdec/gstdvdlpcmdec.c
@@ -209,8 +209,7 @@ gst_dvdlpcmdec_send_tags (GstDvdLpcmDec * dvdlpcmdec)
taglist = gst_tag_list_new (GST_TAG_AUDIO_CODEC, "LPCM Audio",
GST_TAG_BITRATE, bitrate, NULL);
- gst_pad_push_event (dvdlpcmdec->srcpad, gst_event_new_tag ("GstDecoder",
- taglist));
+ gst_pad_push_event (dvdlpcmdec->srcpad, gst_event_new_tag (taglist));
}
static gboolean
diff --git a/gst/dvdsub/Makefile.in b/gst/dvdsub/Makefile.in
index e3d6102..d6e7620 100644
--- a/gst/dvdsub/Makefile.in
+++ b/gst/dvdsub/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst/realmedia/Makefile.in b/gst/realmedia/Makefile.in
index 5c275cf..0c77a57 100644
--- a/gst/realmedia/Makefile.in
+++ b/gst/realmedia/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -250,7 +250,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/gst/realmedia/gstrdtbuffer.c b/gst/realmedia/gstrdtbuffer.c
index 3adf978..4057045 100644
--- a/gst/realmedia/gstrdtbuffer.c
+++ b/gst/realmedia/gstrdtbuffer.c
@@ -16,6 +16,7 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
+#include <string.h>
#include "gstrdtbuffer.h"
@@ -205,6 +206,7 @@ gst_rdt_buffer_get_first_packet (GstBuffer * buffer, GstRDTPacket * packet)
packet->buffer = buffer;
packet->offset = 0;
packet->type = GST_RDT_TYPE_INVALID;
+ memset (&packet->map, 0, sizeof (GstMapInfo));
if (!read_packet_header (packet))
return FALSE;
diff --git a/gst/realmedia/rademux.c b/gst/realmedia/rademux.c
index 0260c58..91fbc08 100644
--- a/gst/realmedia/rademux.c
+++ b/gst/realmedia/rademux.c
@@ -127,7 +127,7 @@ gst_real_audio_demux_reset (GstRealAudioDemux * demux)
}
if (demux->pending_tags) {
- gst_tag_list_free (demux->pending_tags);
+ gst_tag_list_unref (demux->pending_tags);
demux->pending_tags = NULL;
}
@@ -224,7 +224,7 @@ gst_real_audio_demux_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
demux->seekable = TRUE;
res = gst_pad_start_task (sinkpad,
- (GstTaskFunction) gst_real_audio_demux_loop, demux);
+ (GstTaskFunction) gst_real_audio_demux_loop, demux, NULL);
} else {
demux->seekable = FALSE;
res = gst_pad_stop_task (sinkpad);
@@ -319,6 +319,7 @@ gst_real_audio_demux_parse_header (GstRealAudioDemux * demux)
const guint8 *data;
gchar *codec_name = NULL;
GstCaps *caps = NULL;
+ gchar *stream_id;
guint avail;
g_assert (demux->ra_version == 4 || demux->ra_version == 3);
@@ -364,6 +365,7 @@ gst_real_audio_demux_parse_header (GstRealAudioDemux * demux)
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);
+ gst_tag_list_set_scope (demux->pending_tags, GST_TAG_SCOPE_GLOBAL);
break;
default:
g_assert_not_reached ();
@@ -436,15 +438,22 @@ gst_real_audio_demux_parse_header (GstRealAudioDemux * demux)
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_pad_use_fixed_caps (demux->srcpad);
+
+ stream_id =
+ gst_pad_create_stream_id (demux->srcpad, GST_ELEMENT_CAST (demux), NULL);
+ gst_pad_push_event (demux->srcpad, gst_event_new_stream_start (stream_id));
+ g_free (stream_id);
+
+ gst_pad_set_caps (demux->srcpad, caps);
+ codec_name = gst_pb_utils_get_codec_description (caps);
+ gst_caps_unref (caps);
+
gst_element_add_pad (GST_ELEMENT (demux), demux->srcpad);
if (demux->byterate_num > 0 && demux->byterate_denom > 0) {
@@ -469,8 +478,10 @@ gst_real_audio_demux_parse_header (GstRealAudioDemux * demux)
demux->need_newsegment = TRUE;
if (codec_name) {
- if (demux->pending_tags == NULL)
+ if (demux->pending_tags == NULL) {
demux->pending_tags = gst_tag_list_new_empty ();
+ gst_tag_list_set_scope (demux->pending_tags, GST_TAG_SCOPE_GLOBAL);
+ }
gst_tag_list_add (demux->pending_tags, GST_TAG_MERGE_REPLACE,
GST_TAG_AUDIO_CODEC, codec_name, NULL);
@@ -532,7 +543,7 @@ gst_real_audio_demux_parse_data (GstRealAudioDemux * demux)
if (demux->pending_tags) {
gst_pad_push_event (demux->srcpad,
- gst_event_new_tag ("GstDemuxer", demux->pending_tags));
+ gst_event_new_tag (demux->pending_tags));
demux->pending_tags = NULL;
}
@@ -697,6 +708,8 @@ eos:
gst_element_post_message (GST_ELEMENT (demux),
gst_message_new_segment_done (GST_OBJECT (demux), GST_FORMAT_TIME,
stop));
+ gst_pad_push_event (demux->srcpad,
+ gst_event_new_segment_done (GST_FORMAT_TIME, stop));
} else {
/* normal playback, send EOS event downstream */
GST_DEBUG_OBJECT (demux, "sending EOS event, at end of stream");
@@ -808,7 +821,7 @@ gst_real_audio_demux_handle_seek (GstRealAudioDemux * demux, GstEvent * event)
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);
+ (GstTaskFunction) gst_real_audio_demux_loop, demux, NULL);
/* streaming can continue now */
GST_PAD_STREAM_UNLOCK (demux->sinkpad);
diff --git a/gst/realmedia/rdtmanager.c b/gst/realmedia/rdtmanager.c
index 244c0cb..3ee7bc1 100644
--- a/gst/realmedia/rdtmanager.c
+++ b/gst/realmedia/rdtmanager.c
@@ -77,6 +77,7 @@ enum
SIGNAL_ON_BYE_SSRC,
SIGNAL_ON_BYE_TIMEOUT,
SIGNAL_ON_TIMEOUT,
+ SIGNAL_ON_NPT_STOP,
LAST_SIGNAL
};
@@ -298,15 +299,16 @@ activate_session (GstRDTManager * rdtmanager, GstRDTManagerSession * session,
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_activatemode_function (session->recv_rtp_src,
gst_rdt_manager_src_activate_mode);
gst_pad_set_active (session->recv_rtp_src, TRUE);
+
+ gst_pad_set_caps (session->recv_rtp_src, caps);
+ gst_caps_unref (caps);
+
gst_element_add_pad (GST_ELEMENT_CAST (rdtmanager), session->recv_rtp_src);
return TRUE;
@@ -479,6 +481,21 @@ gst_rdt_manager_class_init (GstRDTManagerClass * g_class)
NULL, NULL, gst_rdt_manager_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2,
G_TYPE_UINT, G_TYPE_UINT);
+ /**
+ * GstRDTManager::on-npt-stop:
+ * @rtpbin: the object which received the signal
+ * @session: the session
+ * @ssrc: the SSRC
+ *
+ * Notify that SSRC sender has sent data up to the configured NPT stop time.
+ */
+ gst_rdt_manager_signals[SIGNAL_ON_NPT_STOP] =
+ g_signal_new ("on-npt-stop", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstRDTManagerClass, on_npt_stop),
+ 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 =
@@ -588,7 +605,7 @@ gst_rdt_manager_src_activate_mode (GstPad * pad, GstObject * parent,
GST_DEBUG_OBJECT (rdtmanager, "Starting task on srcpad");
result =
gst_pad_start_task (pad, (GstTaskFunction) gst_rdt_manager_loop,
- pad);
+ pad, NULL);
} else {
/* make sure all data processing stops ASAP */
JBUF_LOCK (session);
diff --git a/gst/realmedia/rdtmanager.h b/gst/realmedia/rdtmanager.h
index 2816817..948c298 100644
--- a/gst/realmedia/rdtmanager.h
+++ b/gst/realmedia/rdtmanager.h
@@ -81,6 +81,7 @@ struct _GstRDTManagerClass {
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);
+ void (*on_npt_stop) (GstRDTManager *rtpdec, guint session, guint32 ssrc);
};
GType gst_rdt_manager_get_type(void);
diff --git a/gst/realmedia/rmdemux.c b/gst/realmedia/rmdemux.c
index e2ed8ac..8624339 100644
--- a/gst/realmedia/rmdemux.c
+++ b/gst/realmedia/rmdemux.c
@@ -585,7 +585,7 @@ gst_rmdemux_perform_seek (GstRMDemux * rmdemux, GstEvent * event)
/* 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);
+ rmdemux->sinkpad, NULL);
}
done:
@@ -669,7 +669,7 @@ gst_rmdemux_reset (GstRMDemux * rmdemux)
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);
+ gst_tag_list_unref (stream->pending_tags);
if (stream->subpackets)
g_ptr_array_free (stream->subpackets, TRUE);
g_free (stream->index);
@@ -681,7 +681,7 @@ gst_rmdemux_reset (GstRMDemux * rmdemux)
rmdemux->n_video_streams = 0;
if (rmdemux->pending_tags != NULL) {
- gst_tag_list_free (rmdemux->pending_tags);
+ gst_tag_list_unref (rmdemux->pending_tags);
rmdemux->pending_tags = NULL;
}
@@ -791,7 +791,7 @@ gst_rmdemux_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
demux->data_offset = G_MAXUINT;
res =
gst_pad_start_task (sinkpad, (GstTaskFunction) gst_rmdemux_loop,
- sinkpad);
+ sinkpad, NULL);
} else {
res = gst_pad_stop_task (sinkpad);
}
@@ -922,6 +922,8 @@ need_pause:
gst_element_post_message (GST_ELEMENT (rmdemux),
gst_message_new_segment_done (GST_OBJECT (rmdemux),
GST_FORMAT_TIME, stop));
+ gst_rmdemux_send_event (rmdemux,
+ gst_event_new_segment_done (GST_FORMAT_TIME, stop));
} else {
/* normal playback, send EOS to all linked pads */
GST_LOG_OBJECT (rmdemux, "Sending EOS, at end of stream");
@@ -1279,6 +1281,7 @@ gst_rmdemux_add_stream (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
GstCaps *stream_caps = NULL;
const gchar *codec_tag = NULL;
gchar *codec_name = NULL;
+ gchar *stream_id;
int version = 0;
if (stream->subtype == GST_RMDEMUX_STREAM_VIDEO) {
@@ -1477,7 +1480,6 @@ gst_rmdemux_add_stream (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
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_function (stream->pad,
@@ -1486,7 +1488,14 @@ gst_rmdemux_add_stream (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
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);
+
+ stream_id =
+ gst_pad_create_stream_id_printf (stream->pad,
+ GST_ELEMENT_CAST (rmdemux), "%u", stream->id);
+ gst_pad_push_event (stream->pad, gst_event_new_stream_start (stream_id));
+ g_free (stream_id);
+
+ gst_pad_set_caps (stream->pad, stream_caps);
codec_name = gst_pb_utils_get_codec_description (stream_caps);
@@ -1498,6 +1507,7 @@ gst_rmdemux_add_stream (GstRMDemux * rmdemux, GstRMDemuxStream * stream)
codec_tag, codec_name, NULL);
g_free (codec_name);
}
+ gst_element_add_pad (GST_ELEMENT_CAST (rmdemux), stream->pad);
}
beach:
@@ -2129,6 +2139,7 @@ gst_rmdemux_handle_scrambled_packet (GstRMDemux * rmdemux,
ret = gst_rmdemux_descramble_sipr_audio (rmdemux, stream);
break;
default:
+ ret = GST_FLOW_ERROR;
g_assert_not_reached ();
}
@@ -2619,15 +2630,14 @@ gst_rmdemux_parse_packet (GstRMDemux * rmdemux, GstBuffer * in, guint16 version)
if (rmdemux->pending_tags != NULL) {
gst_rmdemux_send_event (rmdemux,
- gst_event_new_tag ("GstDemuxer", rmdemux->pending_tags));
+ gst_event_new_tag (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_pad_push_event (stream->pad, gst_event_new_tag ("GstDemuxer",
- stream->pending_tags));
+ gst_pad_push_event (stream->pad, gst_event_new_tag (stream->pending_tags));
stream->pending_tags = NULL;
}
diff --git a/gst/realmedia/rmutils.c b/gst/realmedia/rmutils.c
index 3232ee8..34671ce 100644
--- a/gst/realmedia/rmutils.c
+++ b/gst/realmedia/rmutils.c
@@ -118,7 +118,7 @@ gst_rm_utils_read_tags (const guint8 * data, guint datalen,
if (gst_tag_list_n_tags (tags) > 0)
return tags;
- gst_tag_list_free (tags);
+ gst_tag_list_unref (tags);
return NULL;
}
diff --git a/gst/synaesthesia/Makefile.am b/gst/synaesthesia/Makefile.am
deleted file mode 100644
index da4f986..0000000
--- a/gst/synaesthesia/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index e15f6b0..0000000
--- a/gst/synaesthesia/Makefile.in
+++ /dev/null
@@ -1,786 +0,0 @@
-# Makefile.in generated by automake 1.11.5 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@
-am__make_dryrun = \
- { \
- am__dry=no; \
- case $$MAKEFLAGS in \
- *\\[\ \ ]*) \
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
- *) \
- for am__flg in $$MAKEFLAGS; do \
- case $$am__flg in \
- *=*|--*) ;; \
- *n*) am__dry=yes; break;; \
- esac; \
- done;; \
- esac; \
- test $$am__dry = yes; \
- }
-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@
-target_triplet = @target@
-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-libtool.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)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-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@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-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_AGE = @GST_AGE@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-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_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-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_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-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 = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-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)
- @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 " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
- 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
deleted file mode 100644
index 3932682..0000000
--- a/gst/synaesthesia/README
+++ /dev/null
@@ -1,151 +0,0 @@
-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
deleted file mode 100644
index d31847f..0000000
--- a/gst/synaesthesia/gstsynaesthesia.c
+++ /dev/null
@@ -1,547 +0,0 @@
-/* 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,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
- );
-
-static GstStaticPadTemplate gst_synaesthesia_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS ("audio/x-raw, "
- "format = (string) " GST_AUDIO_NE (S16) ", "
- "rate = (int) [ 8000, 96000 ], "
- "channels = (int) 2, "
- "channel-mask = (bitmask) 0x3, " "layout = (string) interleaved")
- );
-
-static void gst_synaesthesia_finalize (GObject * object);
-static void gst_synaesthesia_dispose (GObject * object);
-
-static GstFlowReturn gst_synaesthesia_chain (GstPad * pad, GstObject * parent,
- GstBuffer * buffer);
-static gboolean gst_synaesthesia_sink_event (GstPad * pad, GstObject * parent,
- GstEvent * event);
-
-static GstStateChangeReturn
-gst_synaesthesia_change_state (GstElement * element, GstStateChange transition);
-
-static gboolean gst_synaesthesia_src_negotiate (GstSynaesthesia * synaesthesia);
-static gboolean gst_synaesthesia_src_setcaps (GstSynaesthesia * synaesthesia,
- GstCaps * caps);
-static gboolean gst_synaesthesia_sink_setcaps (GstSynaesthesia * synaesthesia,
- GstCaps * caps);
-
-#define gst_synaesthesia_parent_class parent_class
-G_DEFINE_TYPE (GstSynaesthesia, gst_synaesthesia, GST_TYPE_ELEMENT);
-
-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);
-
- gst_element_class_set_static_metadata (gstelement_class, "Synaesthesia",
- "Visualization",
- "Creates video visualizations of audio input, using stereo and pitch information",
- "Richard Boulton <richard@tartarus.org>");
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_synaesthesia_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_synaesthesia_sink_template));
-
- synaesthesia_init ();
-}
-
-static void
-gst_synaesthesia_init (GstSynaesthesia * synaesthesia)
-{
- /* 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_event_function (synaesthesia->sinkpad,
- GST_DEBUG_FUNCPTR (gst_synaesthesia_sink_event));
- gst_element_add_pad (GST_ELEMENT (synaesthesia), synaesthesia->sinkpad);
-
- synaesthesia->srcpad =
- gst_pad_new_from_static_template (&gst_synaesthesia_src_template, "src");
- 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 (GstSynaesthesia * synaesthesia, GstCaps * caps)
-{
- GstStructure *structure;
- gint channels;
- gint rate;
- gboolean res = TRUE;
-
- 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:
- 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;
- GstCaps *templ;
- GstQuery *query;
- GstBufferPool *pool = NULL;
- guint size, min, max;
-
- 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_query_caps (synaesthesia->srcpad, NULL);
- if (othercaps) {
- intersect = gst_caps_intersect (othercaps, templ);
- gst_caps_unref (othercaps);
- gst_caps_unref (templ);
-
- if (gst_caps_is_empty (intersect))
- goto no_format;
-
- target = gst_caps_copy_nth (intersect, 0);
- gst_caps_unref (intersect);
- } else {
- target = 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_synaesthesia_src_setcaps (synaesthesia, target);
-
- /* try to get a bufferpool now */
- /* find a pool for the negotiated caps now */
- query = gst_query_new_allocation (target, TRUE);
-
- if (gst_pad_peer_query (synaesthesia->srcpad, query) &&
- gst_query_get_n_allocation_pools (query) > 0) {
- /* we got configuration from our peer, parse them */
- gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
- } else {
- size = synaesthesia->outsize;
- min = max = 0;
- }
-
- if (pool == NULL) {
- GstStructure *config;
-
- /* we did not get a pool, make one ourselves then */
- pool = gst_buffer_pool_new ();
-
- config = gst_buffer_pool_get_config (pool);
- gst_buffer_pool_config_set_params (config, target, size, min, max);
- gst_buffer_pool_set_config (pool, config);
- }
-
- if (synaesthesia->pool)
- gst_object_unref (synaesthesia->pool);
- synaesthesia->pool = pool;
-
- /* and activate */
- gst_buffer_pool_set_active (pool, TRUE);
-
- gst_caps_unref (target);
-
- return TRUE;
-
-no_format:
- {
- gst_caps_unref (intersect);
- return FALSE;
- }
-}
-
-static gboolean
-gst_synaesthesia_src_setcaps (GstSynaesthesia * synaesthesia, GstCaps * caps)
-{
- GstStructure *structure;
- gint w, h;
- gint num, denom;
- gboolean res = TRUE;
-
- 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);
-
- /* size of the output buffer in bytes, depth is always 4 bytes */
- synaesthesia->outsize = synaesthesia->width * synaesthesia->height * 4;
- 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);
-
- res = gst_pad_push_event (synaesthesia->srcpad, gst_event_new_caps (caps));
-
-done:
- return res;
-
- /* Errors */
-missing_caps_details:
- {
- GST_WARNING_OBJECT (synaesthesia,
- "missing width, height or framerate in the caps");
- res = FALSE;
- goto done;
- }
-}
-
-/* make sure we are negotiated */
-static GstFlowReturn
-ensure_negotiated (GstSynaesthesia * synaesthesia)
-{
- gboolean reconfigure;
-
- reconfigure = gst_pad_check_reconfigure (synaesthesia->srcpad);
-
- /* we don't know an output format yet, pick one */
- if (reconfigure || !gst_pad_has_current_caps (synaesthesia->srcpad)) {
- if (!gst_synaesthesia_src_negotiate (synaesthesia))
- return GST_FLOW_NOT_NEGOTIATED;
- }
- return GST_FLOW_OK;
-}
-
-static GstFlowReturn
-gst_synaesthesia_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
-{
- GstFlowReturn ret = GST_FLOW_OK;
- GstSynaesthesia *synaesthesia;
- guint32 avail, bytesperread;
-
- synaesthesia = GST_SYNAESTHESIA (parent);
-
- GST_LOG_OBJECT (synaesthesia, "chainfunc called");
-
- if (synaesthesia->rate == 0) {
- gst_buffer_unref (buffer);
- ret = GST_FLOW_NOT_NEGOTIATED;
- goto exit;
- }
-
- /* Make sure have an output format */
- ret = ensure_negotiated (synaesthesia);
- if (ret != GST_FLOW_OK) {
- gst_buffer_unref (buffer);
- goto exit;
- }
-
- /* 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);
- }
-
- /* 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_map (synaesthesia->adapter,
- bytesperread);
- GstBuffer *outbuf = NULL;
- guchar *out_frame;
- guint i;
-
- /* deinterleave */
- for (i = 0; i < FFT_BUFFER_SIZE; i++) {
- synaesthesia->datain[0][i] = *data++;
- synaesthesia->datain[1][i] = *data++;
- }
-
- /* alloc a buffer */
- GST_DEBUG_OBJECT (synaesthesia, "allocating output buffer");
- ret = gst_buffer_pool_acquire_buffer (synaesthesia->pool, &outbuf, NULL);
- if (ret != GST_FLOW_OK) {
- gst_adapter_unmap (synaesthesia->adapter);
- goto exit;
- }
-
- GST_BUFFER_TIMESTAMP (outbuf) = synaesthesia->next_ts;
- GST_BUFFER_DURATION (outbuf) = synaesthesia->frame_duration;
-
- out_frame = (guchar *)
- synaesthesia_update (synaesthesia->si, synaesthesia->datain);
- gst_buffer_fill (outbuf, 0, out_frame, synaesthesia->outsize);
-
- gst_adapter_unmap (synaesthesia->adapter);
-
- 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);
- }
-
-exit:
- return ret;
-}
-
-static gboolean
-gst_synaesthesia_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
-{
- gboolean res;
- GstSynaesthesia *synaesthesia;
-
- synaesthesia = GST_SYNAESTHESIA (parent);
-
- switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_CAPS:
- {
- GstCaps *caps;
-
- gst_event_parse_caps (event, &caps);
- res = gst_synaesthesia_sink_setcaps (synaesthesia, caps);
- gst_event_unref (event);
- break;
- }
- default:
- res = gst_pad_push_event (synaesthesia->srcpad, event);
- break;
- }
-
- return res;
-}
-
-static GstStateChangeReturn
-gst_synaesthesia_change_state (GstElement * element, GstStateChange transition)
-{
- GstSynaesthesia *synaesthesia;
- GstStateChangeReturn ret;
-
- 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);
- synaesthesia->channels = synaesthesia->rate = 0;
- break;
- default:
- break;
- }
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- if (synaesthesia->pool) {
- gst_buffer_pool_set_active (synaesthesia->pool, FALSE);
- gst_object_replace ((GstObject **) & synaesthesia->pool, NULL);
- }
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-
-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
deleted file mode 100644
index 598ebb3..0000000
--- a/gst/synaesthesia/gstsynaesthesia.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* 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;
- guint outsize;
- GstBufferPool *pool;
-
- /* Audio state */
- gint sample_rate;
- gint rate;
- gint channels;
-
- /* 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
deleted file mode 100644
index 92abd39..0000000
--- a/gst/synaesthesia/synaescope.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/* 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
deleted file mode 100644
index fe41a9a..0000000
--- a/gst/synaesthesia/synaescope.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* 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/gst/xingmux/Makefile.in b/gst/xingmux/Makefile.in
index c19e171..d6bd8e6 100644
--- a/gst/xingmux/Makefile.in
+++ b/gst/xingmux/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -235,7 +235,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/ltmain.sh b/ltmain.sh
index c7d06c3..33f642a 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
# compiler: $LTCC
# compiler flags: $LTCFLAGS
# linker: $LD (gnu? $with_gnu_ld)
-# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1
+# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.1
# automake: $automake_version
# autoconf: $autoconf_version
#
@@ -80,7 +80,7 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1"
+VERSION="2.4.2 Debian-2.4.2-1.1"
TIMESTAMP=""
package_revision=1.3337
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 1f3bcb1..d0fdd54 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -167,7 +167,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 828104c..534d1cc 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -2512,17 +2512,6 @@ freebsd* | dragonfly*)
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
@@ -2639,7 +2628,7 @@ linux*oldld* | linux*aout* | linux*coff*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
version_type=linux # correct to gnu/linux during the next big refactor
need_lib_prefix=no
need_version=no
@@ -3255,10 +3244,6 @@ freebsd* | dragonfly*)
fi
;;
-gnu*)
- lt_cv_deplibs_check_method=pass_all
- ;;
-
haiku*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3297,7 +3282,7 @@ irix5* | irix6* | nonstopux*)
;;
# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -4049,7 +4034,7 @@ m4_if([$1], [CXX], [
;;
esac
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# KAI C++ Compiler
@@ -4348,7 +4333,7 @@ m4_if([$1], [CXX], [
_LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
# old Intel for x86_64 which still supported -KPIC.
ecc*)
@@ -6241,9 +6226,6 @@ if test "$_lt_caught_CXX_error" != yes; then
_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
@@ -6405,7 +6387,7 @@ if test "$_lt_caught_CXX_error" != yes; then
_LT_TAGVAR(inherit_rpath, $1)=yes
;;
- linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
case $cc_basename in
KCC*)
# Kuck and Associates, Inc. (KAI) C++ Compiler
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 7a9c1b7..cabe3e7 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -168,7 +168,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/po/af.gmo b/po/af.gmo
index 1aa18cf..2683098 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index b67eec8..7659875 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins 0.7.6\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/az.gmo b/po/az.gmo
index 2ee58d5..5bb986e 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index cf712cf..a56529a 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-0.8.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/bg.gmo b/po/bg.gmo
index 105c6ec..b7af356 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index c640639..4468ace 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/ca.gmo b/po/ca.gmo
index 66deca6..53af6b6 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 045a8dc..13e5f84 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/cs.gmo b/po/cs.gmo
index d1fb54f..3a38375 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 1f48f0c..8fbeffe 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/da.gmo b/po/da.gmo
index e083271..bf9a069 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index a138ab3..5457292 100644
--- a/po/da.po
+++ b/po/da.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/de.gmo b/po/de.gmo
index f25a18d..d8179a1 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 01832e6..8503259 100644
--- a/po/de.po
+++ b/po/de.po
@@ -13,7 +13,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/el.gmo b/po/el.gmo
index 880cd16..51c2432 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index b465981..cbd7235 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\n"
"PO-Revision-Date: 2012-03-18 01:04+0100\n"
"Last-Translator: Savvas Radevic <vicedar@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 0ad6c40..0a58d34 100644
--- a/po/en_GB.gmo
+++ b/po/en_GB.gmo
Binary files differ
diff --git a/po/en_GB.po b/po/en_GB.po
index 26a0bf0..514653b 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins 0.8.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/eo.gmo b/po/eo.gmo
index 8ae3dc2..7512eb1 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 547a34d..2230e29 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/es.gmo b/po/es.gmo
index e1b870a..8c01a34 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index f627435..ba5cc34 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/eu.gmo b/po/eu.gmo
index 3586d4a..2e1fdf3 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index dab3d93..8e6e5df 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/fi.gmo b/po/fi.gmo
index 31d8d52..fdd05d3 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index ceffadd..605c6da 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -11,7 +11,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/fr.gmo b/po/fr.gmo
index 13ad5bc..0c352ec 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 6c297ed..65a4608 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/gl.gmo b/po/gl.gmo
index 57453db..32605e7 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 348bb19..f39d5ae 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\n"
"PO-Revision-Date: 2012-02-24 12:48+0100\n"
"Last-Translator: Francisco Diéguez <frandieguez@ubuntu.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
diff --git a/po/gst-plugins-ugly-1.0.pot b/po/gst-plugins-ugly-1.0.pot
index fcfa68d..2eb4475 100644
--- a/po/gst-plugins-ugly-1.0.pot
+++ b/po/gst-plugins-ugly-1.0.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: gst-plugins-ugly 0.11.92\n"
+"Project-Id-Version: gst-plugins-ugly 0.11.93\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
@@ -80,6 +80,6 @@ msgstr ""
msgid "This stream contains no data."
msgstr ""
-#: gst/asfdemux/gstasfdemux.c:410 gst/asfdemux/gstasfdemux.c:1750
+#: gst/asfdemux/gstasfdemux.c:410 gst/asfdemux/gstasfdemux.c:1771
msgid "Internal data stream error."
msgstr ""
diff --git a/po/hu.gmo b/po/hu.gmo
index 41a1d4c..26103ed 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index f785616..588c0ae 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/id.gmo b/po/id.gmo
index 4d66779..cee826d 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index ce163d7..b4f54d3 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/it.gmo b/po/it.gmo
index fbfde68..dc4804a 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index c9ae7e9..adde9f1 100644
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/ja.gmo b/po/ja.gmo
index 0ebc19d..c6cf7ab 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 92c9ca8..98dd21f 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/lt.gmo b/po/lt.gmo
index 7e92250..8baa786 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index a7acd83..190b327 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/lv.gmo b/po/lv.gmo
index 1942d9c..5612c88 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index 19bd876..d2bf943 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/ms.gmo b/po/ms.gmo
index 7d4e488..197bc59 100644
--- a/po/ms.gmo
+++ b/po/ms.gmo
Binary files differ
diff --git a/po/ms.po b/po/ms.po
index 66d41ff..e7cbcef 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/mt.gmo b/po/mt.gmo
index d4a6537..52499b9 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 8150f78..99b337f 100644
--- a/po/mt.po
+++ b/po/mt.po
@@ -5,7 +5,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/nb.gmo b/po/nb.gmo
index 8ed856a..6d318ed 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index a391ece..b5a348a 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/nl.gmo b/po/nl.gmo
index 28fc5cf..d213f4c 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 2652097..23729f1 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/or.gmo b/po/or.gmo
index 8cfd0c3..eb31404 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 710e89b..6d942a4 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-0.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/pl.gmo b/po/pl.gmo
index 5b430f2..b0bd425 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index de591c0..cf03dbc 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 043a5dc..da523a7 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 6ffe87f..f2c622b 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/ro.gmo b/po/ro.gmo
index 6ff4eb4..c6d9954 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 5945b97..5f1ef8c 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/ru.gmo b/po/ru.gmo
index e8fcedd..7ae0807 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 42d5044..5765337 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/sk.gmo b/po/sk.gmo
index eb770f5..64d261a 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 421c969..5107524 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/sl.gmo b/po/sl.gmo
index c51532e..3d0f6f0 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 35399ed..7cbd218 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/sq.gmo b/po/sq.gmo
index 460d1bf..ea595b8 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 10e2f00..15ab1ca 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: gst-plugins 0.8.3\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2012-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/sr.gmo b/po/sr.gmo
index 09aa8cc..1ede92c 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 53279a6..ac9ac53 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -5,7 +5,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\n"
"PO-Revision-Date: 2011-12-04 13:43+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnu@prevod.org>\n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 7957522..e08a24a 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index ae49da8..87a5eef 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/tr.gmo b/po/tr.gmo
index b6b1b0c..62f9040 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 24980ac..c3fb141 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -5,7 +5,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/uk.gmo b/po/uk.gmo
index 5f59181..1e142ae 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index db18f50..2149321 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/vi.gmo b/po/vi.gmo
index 95e63b7..5aed93e 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 869969e..801b77e 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,7 +7,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 444dc8a..6135a9c 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 3dc803f..6f636e8 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ 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-06-07 16:28+0200\n"
+"POT-Creation-Date: 2012-08-08 11:49+0100\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"
diff --git a/tests/Makefile.in b/tests/Makefile.in
index f8ca90d..4596b3b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -206,7 +206,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index d7e9312..9dc8332 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.11.5 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -241,7 +241,9 @@ GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
diff --git a/tests/check/elements/amrnbenc.c b/tests/check/elements/amrnbenc.c
index 70e8502..f39deab 100644
--- a/tests/check/elements/amrnbenc.c
+++ b/tests/check/elements/amrnbenc.c
@@ -75,7 +75,7 @@ setup_amrnbenc (void)
"could not set to playing");
caps = gst_caps_from_string (SRC_CAPS);
- fail_unless (gst_pad_push_event (srcpad, gst_event_new_caps (caps)));
+ fail_unless (gst_pad_set_caps (srcpad, caps));
gst_caps_unref (caps);
buffers = NULL;
diff --git a/tests/check/elements/x264enc.c b/tests/check/elements/x264enc.c
index c6a53c6..2cee989 100644
--- a/tests/check/elements/x264enc.c
+++ b/tests/check/elements/x264enc.c
@@ -142,7 +142,7 @@ test_video_profile (const gchar * profile, gint profile_id)
gst_pad_use_fixed_caps (mysinkpad);
caps = gst_caps_from_string (VIDEO_CAPS_STRING);
- fail_unless (gst_pad_push_event (mysrcpad, gst_event_new_caps (caps)));
+ fail_unless (gst_pad_set_caps (mysrcpad, caps));
gst_caps_unref (caps);
/* corresponds to I420 buffer for the size mentioned in the caps */
diff --git a/win32/common/config.h b/win32/common/config.h
index ddfff03..e7fcb50 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -61,7 +61,7 @@
#define GST_PACKAGE_ORIGIN "Unknown package origin"
/* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2012-06-07"
+#define GST_PACKAGE_RELEASE_DATETIME "2012-08-08"
/* Define to enable a52dec (used by a52dec). */
#undef HAVE_A52DEC
@@ -248,7 +248,7 @@
#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.11.92"
+#define PACKAGE_STRING "GStreamer Ugly Plug-ins 0.11.93"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-ugly"
@@ -257,7 +257,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.11.92"
+#define PACKAGE_VERSION "0.11.93"
/* directory where plugins are located */
#ifdef _DEBUG
@@ -288,7 +288,7 @@
#undef TARGET_CPU
/* Version number of package */
-#define VERSION "0.11.92"
+#define VERSION "0.11.93"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */