diff options
author | David Schleef <ds@schleef.org> | 2003-12-18 09:51:22 +0000 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2003-12-18 09:51:22 +0000 |
commit | baf1b56ee51fdfd2de28910f2632bfaf75a2d4f3 (patch) | |
tree | 39ef575d305c30f426cf4ee01a2e7f76c096e914 | |
parent | 62e7452a63055c4323ebb3515e540c7b44d42aed (diff) |
Merge HEAD from CAPS-ROOT to CAPS-MERGE-3, plus some caps conversion
Original commit message from CVS:
Merge HEAD from CAPS-ROOT to CAPS-MERGE-3, plus some caps conversion
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 236 | ||||
-rw-r--r-- | examples/Makefile.am | 4 | ||||
-rw-r--r-- | examples/gstplay/Makefile.am | 9 | ||||
-rw-r--r-- | examples/gstplay/player.c | 156 | ||||
-rw-r--r-- | examples/seeking/vorbisfile.c | 77 | ||||
-rw-r--r-- | gst-libs/gst/video/video.h | 106 | ||||
-rw-r--r-- | gst-plugins.spec.in | 21 | ||||
-rw-r--r-- | pkgconfig/Makefile.am | 6 | ||||
-rw-r--r-- | tests/examples/seek/vorbisfile.c | 77 | ||||
-rw-r--r-- | tests/old/Makefile.am | 4 | ||||
-rw-r--r-- | tests/old/examples/Makefile.am | 4 | ||||
-rw-r--r-- | tests/old/examples/gstplay/Makefile.am | 9 | ||||
-rw-r--r-- | tests/old/examples/gstplay/player.c | 156 | ||||
-rw-r--r-- | tests/old/examples/seek/vorbisfile.c | 77 | ||||
-rw-r--r-- | testsuite/Makefile.am | 4 | ||||
-rw-r--r-- | testsuite/autoplug/.gitignore | 4 | ||||
-rw-r--r-- | testsuite/autoplug/Makefile.am | 10 | ||||
-rw-r--r-- | testsuite/autoplug/autoplug.c | 46 | ||||
-rw-r--r-- | testsuite/autoplug/autoplug2.c | 87 | ||||
-rw-r--r-- | testsuite/autoplug/autoplug3.c | 50 | ||||
-rw-r--r-- | testsuite/autoplug/autoplug4.c | 102 | ||||
-rwxr-xr-x | tools/gst-launch-ext.in | 10 |
24 files changed, 624 insertions, 654 deletions
@@ -1,3 +1,24 @@ +2003-12-16 Thomas Vander Stichele <thomas at apestaart dot org> + + * configure.ac: disable pixbuf loader by default as requested + +2003-12-14 Thomas Vander Stichele <thomas at apestaart dot org> + + * configure.ac: make pixbuf loader configurable + +2003-12-14 Amaury Jacquot <sxpert@esitcom.org> + + * sys/xvideo/gstximage.c: remove 3 unnecessary X headers + * sys/xvideo/gstxvimage.c: same + * sys/xvideo/gstxwindow.c: same + these problems occur when using the X server from freedesktop.org + +2003-12-03 Thomas Vander Stichele <thomas at apestaart dot org> + + * common/m4/gst-feature.m4: *** instead of newline when not built + * configure.ac: fix X detection when no X stuff present + * gst-libs/gst/Makefile.am: put X dependencies inside conditional + 2003-07-12 Thomas Vander Stichele <thomas at apestaart dot org> * gst-plugins.spec.in: fix up spec file diff --git a/Makefile.am b/Makefile.am index 465b74040..e923bfd1e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -16,8 +16,6 @@ else EXAMPLES_DIR= endif -ACLOCAL_AMFLAGS = -I common/m4 - SUBDIRS=gst-libs \ gst sys $(EXT_DIR) \ $(EXAMPLES_DIR) \ diff --git a/configure.ac b/configure.ac index 02a8cbc16..7cd87267d 100644 --- a/configure.ac +++ b/configure.ac @@ -215,6 +215,12 @@ case "x${target_cpu}" in xhppa*) HAVE_CPU_HPPA=yes AC_DEFINE(HAVE_CPU_HPPA, 1, [Define if the target CPU is a HPPA]) ;; esac +# make these available to automake +AM_CONDITIONAL(HAVE_CPU_I386, test "x$HAVE_CPU_I386" = "xyes") +AM_CONDITIONAL(HAVE_CPU_PPC, test "x$HAVE_CPU_PPC" = "xyes") +AM_CONDITIONAL(HAVE_CPU_ALPHA, test "x$HAVE_CPU_ALPHA" = "xyes") +AM_CONDITIONAL(HAVE_CPU_ARM, test "x$HAVE_CPU_ARM" = "xyes") +AM_CONDITIONAL(HAVE_CPU_SPARC, test "x$HAVE_CPU_SPARC" = "xyes") dnl Determine endianness AC_C_BIGENDIAN @@ -235,11 +241,9 @@ HAVE_GTK=NO PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no) if test "x$HAVE_GTK_22" = "xyes"; then HAVE_GTK=yes - AC_PATH_PROG(QUERYLOADERS, gdk-pixbuf-query-loaders, no) GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0` AC_SUBST(GTK_VERSION) GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0` - GTK_SYSCONFDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0` GDK_PIXBUF_LIBDIR=`$PKG_CONFIG --variable=libdir gdk-pixbuf-2.0` GDK_PIXBUF_PREFIXDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0` AC_SUBST(GTK_BASE_DIR) @@ -254,27 +258,67 @@ GTK_LIBS=$GTK2_LIBS AC_SUBST(GTK_LIBS) AC_SUBST(GTK_CFLAGS) AC_SUBST(HAVE_GTK) -AM_CONDITIONAL(HAVE_GDK_LOADERS, test "x$HAVE_GTK_22" = "xyes") - -GDK_PIXBUF_LOADER_DIR="$GDK_PIXBUF_LIBDIR/gtk-2.0/\$(GTK_VERSION)/loaders" -AC_ARG_WITH(gdk-pixbuf-loader-dir, - AC_HELP_STRING([--with-gdk-pixbuf-loader-dir], - [directory to install the gdk_pixbuf loader]), - [if test "x${withval}" != x ; then - GDK_PIXBUF_LOADER_DIR="${withval}" - fi -]) -AC_SUBST(GDK_PIXBUF_LOADER_DIR) - -GDK_PIXBUF_CONFDIR="$GDK_PIXBUF_PREFIXDIR/etc/gtk-2.0/" -AC_ARG_WITH(gdk-pixbuf-conffile, - AC_HELP_STRING([--with-gdk-pixbuf-confdir], - [path to the gdk_pixbuf config directroy]), - [if test "x${withval}" != x ; then - GDK_PIXBUF_CONFDIR="${withval}" - fi -]) -AC_SUBST(GDK_PIXBUF_CONFDIR) + +# gdk_pixbuf gstreamer loader is considered experimental, so disable +# by default +if test "x$HAVE_GTK_22" = "xyes"; then + HAVE_GDK_LOADERS=yes +else + HAVE_GDK_LOADERS=no +fi + +AC_ARG_ENABLE(gdk-pixbuf-loader, + AC_HELP_STRING([--enable-gdk-pixbuf-loader], + [whether to enable building of gdk_pixbuf loader]), + :, HAVE_GDK_LOADERS="no") + +# allow customization of pixbuf loader install location +# when nothing specified, adhere to prefix settings +# when called without any option with this argument, autodetect +# when called with a path, set to the given path + +if test "x$HAVE_GDK_LOADERS" == "xyes"; then + AC_PATH_PROG(QUERYLOADERS, gdk-pixbuf-query-loaders, no) + AC_ARG_WITH(gdk-pixbuf-loader-dir, + AC_HELP_STRING([--with-gdk-pixbuf-loader-dir], + [directory to install the gdk_pixbuf loader (none for pkg-config default)]), + [ + if test "x${withval}" != xyes ; then + GDK_PIXBUF_LOADER_DIR="${withval}" + else + GDK_PIXBUF_LOADER_DIR="$GDK_PIXBUF_LIBDIR/gtk-2.0/\$GTK_VERSION/loaders" + fi + ], + # nothing specified + GDK_PIXBUF_LOADER_DIR=${libdir}/gtk-2.0/\$GTK_VERSION/loaders + ) + AS_AC_EXPAND(GDK_PIXBUF_LOADER_DIR, $GDK_PIXBUF_LOADER_DIR) + AC_SUBST(GDK_PIXBUF_LOADER_DIR) + AC_MSG_NOTICE([Putting GTK+-2 pixbuf loaders in $GDK_PIXBUF_LOADER_DIR]) + + # allow customization of pixbuf loader configuration file + # when nothing specified, adhere to prefix settings + # when called without any option with this argument, autodetect + # when called with a path, set to the given path + AC_ARG_WITH(gdk-pixbuf-conf-dir, + AC_HELP_STRING([--with-gdk-pixbuf-conf-dir], + [directory to install the gdk_pixbuf config (none for pkg-config default)]), + [ + if test "x${withval}" != xyes ; then + GDK_PIXBUF_CONF_DIR="${withval}" + else + GDK_PIXBUF_CONF_DIR="$GDK_PIXBUF_PREFIXDIR/etc/gtk-2.0/" + fi + ], + # nothing specified + GDK_PIXBUF_LOADER_DIR=${libdir}/gtk-2.0/\$GTK_VERSION/loaders + GDK_PIXBUF_CONF_DIR=${sysconfdir}/gtk-2.0 + ) + AS_AC_EXPAND(GDK_PIXBUF_CONF_DIR, $GDK_PIXBUF_CONF_DIR) + AC_SUBST(GDK_PIXBUF_CONF_DIR) + AC_MSG_NOTICE([Putting GTK+-2 pixbuf loader config in $GDK_PIXBUF_CONF_DIR]) +fi +AM_CONDITIONAL(HAVE_GDK_LOADERS, test "x$HAVE_GDK_LOADERS" = "xyes") dnl =========================================================================== dnl ============================= gst plug-ins ================================ @@ -334,6 +378,7 @@ GST_PLUGINS_ALL="\ spectrum \ speed \ stereo \ + switch \ synaesthesia \ tags \ tcp \ @@ -415,39 +460,6 @@ GST_CHECK_FEATURE(QCAM, [QuickCam], qcamsrc, [ fi ]) -dnl *** Video 4 Linux *** -dnl for information about the header/define, see sys/v4l/gstv4lelement.h -translit(dnm, m, l) AM_CONDITIONAL(USE_V4L, true) -GST_CHECK_FEATURE(V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [ - AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [ -#include <sys/types.h> -#define _LINUX_TIME_H -#include <linux/videodev.h> - ]) -]) - -dnl *** Video 4 Linux 2*** -dnl for information about the header/define, see sys/v4l2/gstv4l2element.h -translit(dnm, m, l) AM_CONDITIONAL(USE_V4L2, true) -GST_CHECK_FEATURE(V4L2, [Video 4 Linux 2], v4l2src, [ - AC_MSG_CHECKING([Checking for uptodate v4l2 installation]) - AC_TRY_COMPILE([ -#include <sys/types.h> -#include <linux/types.h> -#define _LINUX_TIME_H -#include <linux/videodev2.h> -#if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION) -#error too early v4l2 version or no v4l2 at all -#endif - ], [ -return 0; - ], [ HAVE_V4L2="yes" && AC_MSG_RESULT(yes)], - [ HAVE_V4L2="no" && AC_MSG_RESULT(no) && - AC_CHECK_HEADER(linux/videodev2.h, - [ AC_MSG_WARN([video4linux2 headers were found, but they're old. Please update v4l2 to compile the v4l2 plugins])], - [ AC_MSG_WARN([video4linux2 was not found])])]) -]) - dnl *** Video CD *** translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true) GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [ @@ -489,23 +501,27 @@ dnl ;; ]) dnl Check for X11 -AC_PATH_XTRA -if test "-DX_DISPLAY_MISSING" = "$X_CFLAGS"; then - AC_MSG_NOTICE([cannot find X11, the build system needs fixage]) - HAVE_X="no" -else - dnl this is much more than we want - X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS" - dnl AC_PATH_XTRA only defines the path needed to find the X libs, not the libs - dnl therefore we add them here - X_LIBS="$X_LIBS -lX11" - AC_SUBST(X_CFLAGS) - AC_SUBST(X_LIBS) - HAVE_X="yes"; -fi -AC_SUBST(HAVE_X) -AM_CONDITIONAL(USE_X, test "-DX_DISPLAY_MISSING" != "$X_CFLAGS") - +translit(dnm, m, l) AM_CONDITIONAL(USE_X, true) +GST_CHECK_FEATURE(X, [X libraries and plugins], + [ximagesink], [ + AC_PATH_XTRA + if test "x$X_CFLAGS" == "x" -o "$X_CFLAGS" == "-DX_DISPLAY_MISSING" + then + AC_MSG_NOTICE([cannot find X11 development files]) + HAVE_X="no" + else + dnl this is much more than we want + X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS" + dnl AC_PATH_XTRA only defines the path needed to find the X libs, not the libs + dnl therefore we add them here + X_LIBS="$X_LIBS -lX11" + AC_SUBST(X_CFLAGS) + AC_SUBST(X_LIBS) + HAVE_X="yes" + fi + AC_SUBST(HAVE_X) +]) + dnl *** XVideo *** dnl Look for the PIC library first, Debian requires it. dnl Check debian-devel archives for gory details. @@ -573,6 +589,50 @@ GST_CHECK_FEATURE(XSHM, [X Shared Memory extension], xshm, [ AC_SUBST(XSHM_LIBS) ] ) +dnl v4l/v4l2 checks have been moved down because they require X + +dnl *** Video 4 Linux *** +dnl for information about the header/define, see sys/v4l/gstv4lelement.h +translit(dnm, m, l) AM_CONDITIONAL(USE_V4L, true) +GST_CHECK_FEATURE(V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [ + # first check X + HAVE_V4L="no" + if test "$HAVE_X" == "yes" + then + AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [ +#include <sys/types.h> +#define _LINUX_TIME_H +#include <linux/videodev.h> + ]) + fi +]) + +dnl *** Video 4 Linux 2*** +dnl for information about the header/define, see sys/v4l2/gstv4l2element.h +translit(dnm, m, l) AM_CONDITIONAL(USE_V4L2, true) +GST_CHECK_FEATURE(V4L2, [Video 4 Linux 2], v4l2src, [ + HAVE_V4L2="no" + if test "$HAVE_X" == "yes" + then + AC_MSG_CHECKING([Checking for uptodate v4l2 installation]) + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <linux/types.h> +#define _LINUX_TIME_H +#include <linux/videodev2.h> +#if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION) +#error too early v4l2 version or no v4l2 at all +#endif + ], [ +return 0; + ], [ HAVE_V4L2="yes" && AC_MSG_RESULT(yes)], + [ HAVE_V4L2="no" && AC_MSG_RESULT(no) && + AC_CHECK_HEADER(linux/videodev2.h, + [ AC_MSG_WARN([video4linux2 headers were found, but they're old. Please update v4l2 to compile the v4l2 plugins])], + [ AC_MSG_WARN([video4linux2 was not found])])]) + fi +]) + dnl Next, check for the optional libraries: dnl These are all libraries used in building plug-ins dnl ================================================ @@ -784,7 +844,7 @@ GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [ AC_MSG_CHECKING([Checking for FAAD >= 2]) AC_TRY_COMPILE([ #include <faad.h> -#if !defined(FAAD2_VERSION) +#if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE) #error Not faad2 #endif ], [ return 0; ], @@ -1013,6 +1073,16 @@ GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [ AC_SUBST(MPEG2DEC_LIBS) ]) +dnl *** mpeg2enc *** +translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true) +GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [ + PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.92, + HAVE_MPEG2ENC="yes", HAVE_MPEG2ENC="no") + MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp" + AC_SUBST(MPEG2ENC_CFLAGS) + AC_SUBST(MPEG2ENC_LIBS) +]) + dnl *** mplex *** translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true) GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [HAVE_MPLEX=$HAVE_CXX]) @@ -1036,7 +1106,10 @@ GST_CHECK_FEATURE(RAW1394, [raw1394 library], dv1394src, [ dnl *** SDL *** translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true) GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink, [ - AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no) + dnl sdlvideosink depends on the xoverlay interface, which depends on X + if test x$HAVE_X = xyes; then + AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no) + fi ]) dnl *** shout *** @@ -1251,11 +1324,6 @@ dnl ############################# dnl These should be "USE_*" instead of "HAVE_*", but some packages expect dnl HAVE_ and it is likely to be easier to stick with the old name -AM_CONDITIONAL(HAVE_CPU_I386, test "x$HAVE_CPU_I386" = "xyes") -AM_CONDITIONAL(HAVE_CPU_PPC, test "x$HAVE_CPU_PPC" = "xyes") -AM_CONDITIONAL(HAVE_CPU_ALPHA, test "x$HAVE_CPU_ALPHA" = "xyes") -AM_CONDITIONAL(HAVE_CPU_ARM, test "x$HAVE_CPU_ARM" = "xyes") -AM_CONDITIONAL(HAVE_CPU_SPARC, test "x$HAVE_CPU_SPARC" = "xyes") AM_CONDITIONAL(HAVE_LIBMMX, test "x$USE_LIBMMX" = "xyes") AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes") @@ -1293,7 +1361,6 @@ dnl ############################ dnl set license and copyright notice AC_DEFINE(GST_LICENSE, "LGPL", [GStreamer license]) -AC_DEFINE(GST_COPYRIGHT, "(c) 1999-2003 The GStreamer Team", [copyright message in plugins]) dnl package name in plugins AC_ARG_WITH(package-name, AC_HELP_STRING([--with-package-name],[specify package name to use in plugins]), @@ -1302,7 +1369,7 @@ AC_HELP_STRING([--with-package-name],[specify package name to use in plugins]), no) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;; *) GST_PACKAGE="${withval}" ;; esac], -[GST_PACKAGE="Gstreamer"]) dnl Default value +[GST_PACKAGE="GStreamer"]) dnl Default value AC_MSG_NOTICE(Using $GST_PACKAGE as package name) AC_DEFINE_UNQUOTED(GST_PACKAGE, "$GST_PACKAGE", [package name in plugins]) dnl package origin URL @@ -1381,6 +1448,7 @@ gst/smpte/Makefile gst/spectrum/Makefile gst/speed/Makefile gst/stereo/Makefile +gst/switch/Makefile gst/synaesthesia/Makefile gst/tags/Makefile gst/tcp/Makefile @@ -1444,6 +1512,7 @@ ext/mad/Makefile ext/mas/Makefile ext/mikmod/Makefile ext/mpeg2dec/Makefile +ext/mpeg2enc/Makefile ext/mplex/Makefile ext/ogg/Makefile ext/pango/Makefile @@ -1474,6 +1543,7 @@ gst-libs/gst/play/Makefile gst-libs/gst/propertyprobe/Makefile gst-libs/gst/resample/Makefile gst-libs/gst/riff/Makefile +gst-libs/gst/tag/Makefile gst-libs/gst/tuner/Makefile gst-libs/gst/video/Makefile gst-libs/gst/xoverlay/Makefile @@ -1485,8 +1555,8 @@ examples/dynparams/Makefile examples/capsfilter/Makefile examples/seeking/Makefile examples/indexing/Makefile +examples/gstplay/Makefile examples/Makefile -testsuite/autoplug/Makefile testsuite/spider/Makefile testsuite/alsa/Makefile testsuite/Makefile diff --git a/examples/Makefile.am b/examples/Makefile.am index 6c582d9e5..8c10c89ea 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -10,5 +10,5 @@ else GTK_SUBDIRS= endif -SUBDIRS=$(GTK_SUBDIRS) -DIST_SUBDIRS=capsfilter dynparams seeking indexing +SUBDIRS=$(GTK_SUBDIRS) gstplay +DIST_SUBDIRS=capsfilter dynparams seeking indexing gstplay diff --git a/examples/gstplay/Makefile.am b/examples/gstplay/Makefile.am new file mode 100644 index 000000000..f80a8bfab --- /dev/null +++ b/examples/gstplay/Makefile.am @@ -0,0 +1,9 @@ + +noinst_PROGRAMS = player + +player_SOURCES = player.c +player_CFLAGS = $(GST_CFLAGS) +player_LDFLAGS = \ + $(GST_LIBS) \ + $(top_builddir)/gst-libs/gst/play/libgstplay-@GST_MAJORMINOR@.la + diff --git a/examples/gstplay/player.c b/examples/gstplay/player.c new file mode 100644 index 000000000..846d58ac5 --- /dev/null +++ b/examples/gstplay/player.c @@ -0,0 +1,156 @@ +/* GStreamer + * Copyright (C) 2003 Julien Moutte <julien@moutte.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <gst/play/gstplay.h> + +static GMainLoop *loop = NULL; +static gint64 length = 0; + +static void +print_tag (const GstTagList *list, const gchar *tag, gpointer unused) +{ + gint i, count; + + count = gst_tag_list_get_tag_size (list, tag); + + for (i = 0; i < count; i++) { + gchar *str; + + if (gst_tag_get_type (tag) == G_TYPE_STRING) { + g_assert (gst_tag_list_get_string_index (list, tag, i, &str)); + } else { + str = g_strdup_value_contents ( + gst_tag_list_get_value_index (list, tag, i)); + } + + if (i == 0) { + g_print ("%15s: %s\n", gst_tag_get_nick (tag), str); + } else { + g_print (" : %s\n", str); + } + + g_free (str); + } +} + +static void +got_found_tag (GstPlay *play,GstElement *source, GstTagList *tag_list) +{ + gst_tag_list_foreach (tag_list, print_tag, NULL); +} + +static void +got_time_tick (GstPlay *play, gint64 time_nanos) +{ + g_message ("time tick %llu", time_nanos); +} + +static void +got_stream_length (GstPlay *play, gint64 length_nanos) +{ + g_message ("got length %llu", length_nanos); + length = length_nanos; +} + +static void +got_video_size (GstPlay *play, gint width, gint height) +{ + g_message ("got video size %d, %d", width, height); +} + +static void +got_eos (GstPlay *play) +{ + g_main_loop_quit (loop); +} + +static gboolean +seek_timer (GstPlay *play) +{ + gst_play_seek_to_time (play, length / 2); + return FALSE; +} + +static gboolean +idle_iterate (GstPlay *play) +{ + gst_bin_iterate (GST_BIN (play)); + return (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING); +} + +int +main (int argc, char *argv[]) +{ + GstPlay *play; + GstElement *data_src, *video_sink, *audio_sink, *vis_element; + + /* Initing GStreamer library */ + gst_init (&argc, &argv); + + if (argc != 2) { + g_print ("usage: %s <video filename>\n", argv[0]); + exit (-1); + } + + loop = g_main_loop_new (NULL, FALSE); + + /* Creating the GstPlay object */ + play = gst_play_new (); + + /* Getting default audio and video plugins from GConf */ + audio_sink = gst_element_factory_make ("osssink", "audio_sink"); + video_sink = gst_element_factory_make ("xvimagesink", "video_sink"); + vis_element = gst_element_factory_make ("goom", "vis_element"); + data_src = gst_element_factory_make ("gnomevfssrc", "source"); + + /* Let's send them to GstPlay object */ + gst_play_set_audio_sink (play, audio_sink); + gst_play_set_video_sink (play, video_sink); + gst_play_set_data_src (play, data_src); + gst_play_set_visualization (play, vis_element); + + /* Setting location we want to play */ + gst_play_set_location (play, argv[1]); + + /* gst_xml_write_file (GST_ELEMENT (play), stdout); */ + + g_signal_connect (G_OBJECT (play), "time_tick", + G_CALLBACK (got_time_tick), NULL); + g_signal_connect (G_OBJECT (play), "stream_length", + G_CALLBACK (got_stream_length), NULL); + g_signal_connect (G_OBJECT (play), "have_video_size", + G_CALLBACK (got_video_size), NULL); + g_signal_connect (G_OBJECT (play), "found_tag", + G_CALLBACK (got_found_tag), NULL); + g_signal_connect (G_OBJECT (play), "eos", + G_CALLBACK (got_eos), NULL); + + /* Change state to PLAYING */ + gst_element_set_state (GST_ELEMENT (play), GST_STATE_PLAYING); + + g_idle_add ((GSourceFunc) idle_iterate, play); + g_timeout_add (20000, (GSourceFunc) seek_timer, play); + + g_main_loop_run (loop); + + /* unref */ + gst_object_unref (GST_OBJECT (play)); + + exit (0); +} diff --git a/examples/seeking/vorbisfile.c b/examples/seeking/vorbisfile.c index 29fc18cfe..f191aa7b8 100644 --- a/examples/seeking/vorbisfile.c +++ b/examples/seeking/vorbisfile.c @@ -12,78 +12,27 @@ struct probe_context { gint total_ls; - GstCaps *metadata; - GstCaps *streaminfo; - GstCaps *caps; + GstCaps2 *metadata; + GstCaps2 *streaminfo; + GstCaps2 *caps; }; static void -print_caps (GstCaps *caps) +print_caps (GstCaps2 *caps) { - if (caps == NULL) return; - if (!strcmp (gst_caps_get_mime (caps), "application/x-gst-metadata") || - !strcmp (gst_caps_get_mime (caps), "application/x-gst-streaminfo")) - { - GstProps *props = caps->properties; - GList *walk; - /* ugly hack, but ok for now. If needed, fix by individual strcmp */ - g_print (" %s:\n", gst_caps_get_mime (caps) + 18); - if (props == NULL) { - g_print (" none\n"); - return; - } - walk = props->properties; - - while (walk) { - GstPropsEntry *entry = (GstPropsEntry *) walk->data; - const gchar *name; - const gchar *str_val; - gint int_val; - GstPropsType type; - - name = gst_props_entry_get_name (entry); - type = gst_props_entry_get_props_type (entry); - switch (type) { - case GST_PROPS_STRING_TYPE: - gst_props_entry_get_string (entry, &str_val); - g_print (" %s='%s'\n", name, str_val); - break; - case GST_PROPS_INT_TYPE: - gst_props_entry_get_int (entry, &int_val); - g_print (" %s=%d\n", name, int_val); - break; - default: - break; - } - walk = g_list_next (walk); - } - } - else { - g_print (" unkown caps type\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" %s\n", s); + g_free (s); } static void -print_format (GstCaps *caps) +print_format (GstCaps2 *caps) { - g_print (" format:\n"); - if (!caps || caps->properties == NULL) { - g_print (" unkown\n"); - return; - } - if (!strcmp (gst_caps_get_mime (caps), "audio/raw")) { - gint channels; - gint rate; - - gst_caps_get_int (caps, "channels", &channels); - gst_caps_get_int (caps, "rate", &rate); - - g_print (" channels: %d\n", channels); - g_print (" rate: %d\n", rate); - } - else { - g_print (" unkown format\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" format: %s\n", s); + g_free (s); } static void diff --git a/gst-libs/gst/video/video.h b/gst-libs/gst/video/video.h index fb64271bb..e4434afed 100644 --- a/gst-libs/gst/video/video.h +++ b/gst-libs/gst/video/video.h @@ -27,25 +27,25 @@ #define G_MASK_32 "0x00ff0000" #define B_MASK_32 "0x0000ff00" -#define R_MASK_32_REVERSE 0x000000ff -#define G_MASK_32_REVERSE 0x0000ff00 -#define B_MASK_32_REVERSE 0x00ff0000 +#define R_MASK_32_REVERSE "0x000000ff" +#define G_MASK_32_REVERSE "0x0000ff00" +#define B_MASK_32_REVERSE "0x00ff0000" #define R_MASK_24 "0xff0000" #define G_MASK_24 "0x00ff00" #define B_MASK_24 "0x0000ff" -#define R_MASK_24_REVERSE 0x0000ff -#define G_MASK_24_REVERSE 0x00ff00 -#define B_MASK_24_REVERSE 0xff0000 +#define R_MASK_24_REVERSE "0x0000ff" +#define G_MASK_24_REVERSE "0x00ff00" +#define B_MASK_24_REVERSE "0xff0000" #define R_MASK_16 "0xf800" #define G_MASK_16 "0x07e0" #define B_MASK_16 "0x001f" -#define R_MASK_15 0x8c00 -#define G_MASK_15 0x03e0 -#define B_MASK_15 0x001f +#define R_MASK_15 "0x8c00" +#define G_MASK_15 "0x03e0" +#define B_MASK_15 "0x001f" #define SIZE_RANGE "(int) [ 16, 4096 ]" #define FPS_RANGE "(double) [ 0, max ]" @@ -119,44 +119,41 @@ "height = " SIZE_RANGE ", " \ "framerate = " FPS_RANGE -#define GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_24 \ - gst_props_new ( \ - "bpp", GST_PROPS_INT (24), \ - "depth", GST_PROPS_INT (24), \ - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), \ - "red_mask", GST_PROPS_INT (R_MASK_24), \ - "green_mask", GST_PROPS_INT (G_MASK_24), \ - "blue_mask", GST_PROPS_INT (B_MASK_24), \ - "width", SIZE_RANGE, \ - "height", SIZE_RANGE, \ - "framerate", FPS_RANGE, \ - NULL) +#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24 \ + "video/x-raw-rgb, " \ + "bpp = (int) 24, " \ + "depth = (int) 24, " \ + "endianness = (int) BIG_ENDIAN, " \ + "red_mask = (int) " R_MASK_24 ", " \ + "green_mask = (int) " G_MASK_24 ", " \ + "blue_mask = (int) " B_MASK_24 ", " \ + "width = " SIZE_RANGE ", " \ + "height = " SIZE_RANGE ", " \ + "framerate = " FPS_RANGE #define GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_32_REVERSE \ - gst_props_new ( \ - "bpp", GST_PROPS_INT (32), \ - "depth", GST_PROPS_INT (32), \ - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), \ - "red_mask", GST_PROPS_INT (R_MASK_32_REVERSE), \ - "green_mask", GST_PROPS_INT (G_MASK_32_REVERSE), \ - "blue_mask", GST_PROPS_INT (B_MASK_32_REVERSE), \ - "width", SIZE_RANGE, \ - "height", SIZE_RANGE, \ - "framerate", FPS_RANGE, \ - NULL) + "video/x-raw-rgb, " \ + "bpp = (int) 32, " \ + "depth = (int) 32, " \ + "endianness = (int) BIG_ENDIAN, " \ + "red_mask = (int) " R_MASK_32_REVERSE ", " \ + "green_mask = (int) " G_MASK_32_REVERSE ", " \ + "blue_mask = (int) " B_MASK_32_REVERSE ", " \ + "width = " SIZE_RANGE ", " \ + "height = " SIZE_RANGE ", " \ + "framerate = " FPS_RANGE -#define GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_24_REVERSE \ - gst_props_new ( \ - "bpp", GST_PROPS_INT (24), \ - "depth", GST_PROPS_INT (24), \ - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), \ - "red_mask", GST_PROPS_INT (R_MASK_24_REVERSE), \ - "green_mask", GST_PROPS_INT (G_MASK_24_REVERSE), \ - "blue_mask", GST_PROPS_INT (B_MASK_24_REVERSE), \ - "width", SIZE_RANGE, \ - "height", SIZE_RANGE, \ - "framerate", FPS_RANGE, \ - NULL) +#define GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24_REVERSE \ + "video/x-raw-rgb, " \ + "bpp = (int) 24, " \ + "depth = (int) 24, " \ + "endianness = (int) BIG_ENDIAN, " \ + "red_mask = (int) " R_MASK_24_REVERSE ", " \ + "green_mask = (int) " G_MASK_24_REVERSE ", " \ + "blue_mask = (int) " B_MASK_24_REVERSE ", " \ + "width = " SIZE_RANGE ", " \ + "height = " SIZE_RANGE ", " \ + "framerate = " FPS_RANGE #define GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_15_16 \ gst_props_new ( \ @@ -196,17 +193,16 @@ "framerate = " FPS_RANGE #define GST_VIDEO_RGB_PAD_TEMPLATE_PROPS_15 \ - gst_props_new ( \ - "bpp", GST_PROPS_INT (15), \ - "depth", GST_PROPS_INT (15), \ - "endianness", GST_PROPS_INT (G_BYTE_ORDER), \ - "red_mask", GST_PROPS_INT (R_MASK_15), \ - "green_mask", GST_PROPS_INT (G_MASK_15), \ - "blue_mask", GST_PROPS_INT (B_MASK_15), \ - "width", SIZE_RANGE, \ - "height", SIZE_RANGE, \ - "framerate", FPS_RANGE, \ - NULL) + "video/x-raw-rgb, " \ + "bpp = (int) 16, " \ + "depth = (int) 15, " \ + "endianness = (int) BYTE_ORDER, " \ + "red_mask = (int) " R_MASK_15 ", " \ + "green_mask = (int) " G_MASK_15 ", " \ + "blue_mask = (int) " B_MASK_15 ", " \ + "width = " SIZE_RANGE ", " \ + "height = " SIZE_RANGE ", " \ + "framerate = " FPS_RANGE #define GST_VIDEO_YUV_PAD_TEMPLATE_CAPS(fourcc) \ "video/x-raw-yuv, " \ diff --git a/gst-plugins.spec.in b/gst-plugins.spec.in index 3033e3dbc..3beedc73e 100644 --- a/gst-plugins.spec.in +++ b/gst-plugins.spec.in @@ -24,8 +24,8 @@ Requires: gstreamer >= 0.6.1 BuildRequires: gstreamer-devel >= 0.6.1 BuildRequires: gstreamer-tools >= 0.6.1 -@USE_ARTS_TRUE@Requires: arts >= 2 -@USE_ARTS_TRUE@BuildRequires: arts-devel >= 2 +@USE_ARTS_TRUE@Requires: arts >= 1.1.4 +@USE_ARTS_TRUE@BuildRequires: arts-devel >= 1.1.4 @USE_ARTS_TRUE@BuildRequires: gcc-c++ @USE_AUDIOFILE_TRUE@Requires: audiofile >= 0.2.1 @USE_AUDIOFILE_TRUE@BuildRequires: audiofile-devel >= 0.2.1 @@ -124,6 +124,7 @@ FFLAGS="${FFLAGS:-%optflags}" ; export FFLAGS ; \ --libexecdir=%{_libexecdir} \ --localstatedir=%{_localstatedir} \ --sharedstatedir=%{_sharedstatedir} \ + --with-gdk-pixbuf-loader-dir=$RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders \ --mandir=%{_mandir} \ --infodir=%{_infodir} \ --enable-debug \ @@ -163,7 +164,6 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.a rm -f $RPM_BUILD_ROOT%{_libdir}/*.la rm -f $RPM_BUILD_ROOT%{_includedir}/gstreamer-%{majorminor}/gst/media-info/media-info.h rm -f $RPM_BUILD_ROOT%{_libdir}/libgstmedia-info*.so.0.0.0 -rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.la %clean @@ -234,7 +234,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.la %{_libdir}/gstreamer-%{majorminor}/libgsty4menc.so %{_libdir}/gstreamer-%{majorminor}/libgstaudioconvert.so %{_libdir}/gstreamer-%{majorminor}/libgstefence.so -%{_libdir}/gstreamer-%{majorminor}/libgstgdkpixbuf.so +# %{_libdir}/gstreamer-%{majorminor}/libgstgdkpixbuf.so %{_libdir}/gstreamer-%{majorminor}/libgstrmdemux.so %{_libdir}/gstreamer-%{majorminor}/libgsttimeoverlay.so %{_libdir}/gstreamer-%{majorminor}/libgstvideobalance.so @@ -259,8 +259,9 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.la %{_libdir}/gstreamer-%{majorminor}/libgsttypefindfunctions.so %{_libdir}/gstreamer-%{majorminor}/libgstximagesink.so %{_libdir}/gstreamer-%{majorminor}/libgstxvimagesink.so -%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.so %{_libdir}/libgstinterfaces-%{majorminor}.so* +%{_libdir}/gstreamer-%{majorminor}/libgstswitch.so +%{_libdir}/gstreamer-%{majorminor}/libgsttagediting.so # non-core plugins with external dependencies @USE_ARTS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstarts.so @@ -274,6 +275,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.la @USE_MIKMOD_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstmikmod.so @USE_SDL_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstsdlvideosink.so @USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvorbis.so +@USE_VORBIS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstogg.so @USE_LIBPNG_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstpng.so @USE_OSS_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstossaudio.so @USE_V4L_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstvideo4linux.so @@ -284,7 +286,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/gtk-2.0/2.2.0/loaders/gst_loader.la @USE_GCONF_TRUE@%{_libdir}/pkgconfig/gstreamer-gconf-%{majorminor}.pc # Snapshot plugin @USE_LIBPNG_TRUE@%{_libdir}/gstreamer-%{majorminor}/libgstsnapshot.so - +%{_libdir}/gstreamer-%{majorminor}/libgstxvid.so %post %{_bindir}/gst-register-%{majorminor} > /dev/null 2> /dev/null @@ -302,12 +304,10 @@ GStreamer support libraries header files. %files -n gstreamer-plugins-devel %defattr(-, root, root) %{_includedir}/gstreamer-%{majorminor}/gst/gconf/gconf.h -%{_includedir}/gstreamer-%{majorminor}/gst/play/play.h %{_includedir}/gstreamer-%{majorminor}/gst/audio/audio.h %{_includedir}/gstreamer-%{majorminor}/gst/floatcast/floatcast.h %{_includedir}/gstreamer-%{majorminor}/gst/idct/idct.h %{_includedir}/gstreamer-%{majorminor}/gst/resample/resample.h -%{_includedir}/gstreamer-%{majorminor}/gst/riff/riff.h %{_includedir}/gstreamer-%{majorminor}/gst/video/video.h %{_includedir}/gstreamer-%{majorminor}/gst/audio/audioclock.h %{_includedir}/gstreamer-%{majorminor}/gst/mixer/mixer.h @@ -322,12 +322,15 @@ GStreamer support libraries header files. %{_includedir}/gstreamer-%{majorminor}/gst/xoverlay/xoverlay.h %{_includedir}/gstreamer-%{majorminor}/gst/xwindowlistener/xwindowlistener.h %{_includedir}/gstreamer-%{majorminor}/gst/propertyprobe/propertyprobe.h +%{_includedir}/gstreamer-%{majorminor}/gst/play/gstplay.h +%{_includedir}/gstreamer-%{majorminor}/gst/riff* %{_libdir}/pkgconfig/gstreamer-libs-%{majorminor}.pc %{_libdir}/pkgconfig/gstreamer-play-%{majorminor}.pc %{_libdir}/pkgconfig/gstreamer-interfaces-%{majorminor}.pc @USE_GCONF_TRUE@%{_libdir}/libgstgconf-%{majorminor}.so %{_libdir}/libgstplay-%{majorminor}.so + # Here are all the packages depending on external libs # ### A52DEC ### @@ -859,6 +862,8 @@ Plug-in for playing ASF movies under GStreamer. %changelog +* Wed Dec 17 2003 Christian Schaller <Uraeus@gnome.org> +- remove gsttagediting.h as it is gone * Sun Nov 23 2003 Christian Schaller <Uraeus@gnome.org> - Update spec file for latest changes - add faad plugin diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am index 808545ae4..36bca3529 100644 --- a/pkgconfig/Makefile.am +++ b/pkgconfig/Makefile.am @@ -27,12 +27,12 @@ $(pcfiles_uninstalled): %-@GST_MAJORMINOR@-uninstalled.pc: %-uninstalled.pc ### how to generate gconf dir pc files from their pc.in files ### somebody smart could figure out how to fold this back into one rule -$(srcdir)/../gst-libs/gst/gconf/gstreamer-gconf*.pc: - cd $(srcdir)/../gst-libs/gst/gconf && make gstreamer-gconf.pc gstreamer-gconf-uninstalled.pc +$(top_builddir)/gst-libs/gst/gconf/gstreamer-gconf*.pc: + cd $(top_builddir)/gst-libs/gst/gconf && make gstreamer-gconf.pc gstreamer-gconf-uninstalled.pc ### how to generate pc files from base .pc file in other dir $(pcfiles_gconf): gstreamer-gconf-@GST_MAJORMINOR@%.pc: \ - $(srcdir)/../gst-libs/gst/gconf/gstreamer-gconf%.pc + $(top_builddir)/gst-libs/gst/gconf/gstreamer-gconf%.pc cp $< $@ pkgconfigdir = $(libdir)/pkgconfig diff --git a/tests/examples/seek/vorbisfile.c b/tests/examples/seek/vorbisfile.c index 29fc18cfe..f191aa7b8 100644 --- a/tests/examples/seek/vorbisfile.c +++ b/tests/examples/seek/vorbisfile.c @@ -12,78 +12,27 @@ struct probe_context { gint total_ls; - GstCaps *metadata; - GstCaps *streaminfo; - GstCaps *caps; + GstCaps2 *metadata; + GstCaps2 *streaminfo; + GstCaps2 *caps; }; static void -print_caps (GstCaps *caps) +print_caps (GstCaps2 *caps) { - if (caps == NULL) return; - if (!strcmp (gst_caps_get_mime (caps), "application/x-gst-metadata") || - !strcmp (gst_caps_get_mime (caps), "application/x-gst-streaminfo")) - { - GstProps *props = caps->properties; - GList *walk; - /* ugly hack, but ok for now. If needed, fix by individual strcmp */ - g_print (" %s:\n", gst_caps_get_mime (caps) + 18); - if (props == NULL) { - g_print (" none\n"); - return; - } - walk = props->properties; - - while (walk) { - GstPropsEntry *entry = (GstPropsEntry *) walk->data; - const gchar *name; - const gchar *str_val; - gint int_val; - GstPropsType type; - - name = gst_props_entry_get_name (entry); - type = gst_props_entry_get_props_type (entry); - switch (type) { - case GST_PROPS_STRING_TYPE: - gst_props_entry_get_string (entry, &str_val); - g_print (" %s='%s'\n", name, str_val); - break; - case GST_PROPS_INT_TYPE: - gst_props_entry_get_int (entry, &int_val); - g_print (" %s=%d\n", name, int_val); - break; - default: - break; - } - walk = g_list_next (walk); - } - } - else { - g_print (" unkown caps type\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" %s\n", s); + g_free (s); } static void -print_format (GstCaps *caps) +print_format (GstCaps2 *caps) { - g_print (" format:\n"); - if (!caps || caps->properties == NULL) { - g_print (" unkown\n"); - return; - } - if (!strcmp (gst_caps_get_mime (caps), "audio/raw")) { - gint channels; - gint rate; - - gst_caps_get_int (caps, "channels", &channels); - gst_caps_get_int (caps, "rate", &rate); - - g_print (" channels: %d\n", channels); - g_print (" rate: %d\n", rate); - } - else { - g_print (" unkown format\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" format: %s\n", s); + g_free (s); } static void diff --git a/tests/old/Makefile.am b/tests/old/Makefile.am index 629d896ed..9d43a4f28 100644 --- a/tests/old/Makefile.am +++ b/tests/old/Makefile.am @@ -4,8 +4,8 @@ else ALSA_DIR= endif -SUBDIRS=autoplug spider $(ALSA_DIR) #seeking -DIST_SUBDIRS=autoplug spider alsa +SUBDIRS=spider $(ALSA_DIR) #seeking +DIST_SUBDIRS=spider alsa GST_PLUGIN_PATH=$(shell cd $(top_builddir) && pwd) diff --git a/tests/old/examples/Makefile.am b/tests/old/examples/Makefile.am index 6c582d9e5..8c10c89ea 100644 --- a/tests/old/examples/Makefile.am +++ b/tests/old/examples/Makefile.am @@ -10,5 +10,5 @@ else GTK_SUBDIRS= endif -SUBDIRS=$(GTK_SUBDIRS) -DIST_SUBDIRS=capsfilter dynparams seeking indexing +SUBDIRS=$(GTK_SUBDIRS) gstplay +DIST_SUBDIRS=capsfilter dynparams seeking indexing gstplay diff --git a/tests/old/examples/gstplay/Makefile.am b/tests/old/examples/gstplay/Makefile.am new file mode 100644 index 000000000..f80a8bfab --- /dev/null +++ b/tests/old/examples/gstplay/Makefile.am @@ -0,0 +1,9 @@ + +noinst_PROGRAMS = player + +player_SOURCES = player.c +player_CFLAGS = $(GST_CFLAGS) +player_LDFLAGS = \ + $(GST_LIBS) \ + $(top_builddir)/gst-libs/gst/play/libgstplay-@GST_MAJORMINOR@.la + diff --git a/tests/old/examples/gstplay/player.c b/tests/old/examples/gstplay/player.c new file mode 100644 index 000000000..846d58ac5 --- /dev/null +++ b/tests/old/examples/gstplay/player.c @@ -0,0 +1,156 @@ +/* GStreamer + * Copyright (C) 2003 Julien Moutte <julien@moutte.net> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <gst/play/gstplay.h> + +static GMainLoop *loop = NULL; +static gint64 length = 0; + +static void +print_tag (const GstTagList *list, const gchar *tag, gpointer unused) +{ + gint i, count; + + count = gst_tag_list_get_tag_size (list, tag); + + for (i = 0; i < count; i++) { + gchar *str; + + if (gst_tag_get_type (tag) == G_TYPE_STRING) { + g_assert (gst_tag_list_get_string_index (list, tag, i, &str)); + } else { + str = g_strdup_value_contents ( + gst_tag_list_get_value_index (list, tag, i)); + } + + if (i == 0) { + g_print ("%15s: %s\n", gst_tag_get_nick (tag), str); + } else { + g_print (" : %s\n", str); + } + + g_free (str); + } +} + +static void +got_found_tag (GstPlay *play,GstElement *source, GstTagList *tag_list) +{ + gst_tag_list_foreach (tag_list, print_tag, NULL); +} + +static void +got_time_tick (GstPlay *play, gint64 time_nanos) +{ + g_message ("time tick %llu", time_nanos); +} + +static void +got_stream_length (GstPlay *play, gint64 length_nanos) +{ + g_message ("got length %llu", length_nanos); + length = length_nanos; +} + +static void +got_video_size (GstPlay *play, gint width, gint height) +{ + g_message ("got video size %d, %d", width, height); +} + +static void +got_eos (GstPlay *play) +{ + g_main_loop_quit (loop); +} + +static gboolean +seek_timer (GstPlay *play) +{ + gst_play_seek_to_time (play, length / 2); + return FALSE; +} + +static gboolean +idle_iterate (GstPlay *play) +{ + gst_bin_iterate (GST_BIN (play)); + return (GST_STATE (GST_ELEMENT (play)) == GST_STATE_PLAYING); +} + +int +main (int argc, char *argv[]) +{ + GstPlay *play; + GstElement *data_src, *video_sink, *audio_sink, *vis_element; + + /* Initing GStreamer library */ + gst_init (&argc, &argv); + + if (argc != 2) { + g_print ("usage: %s <video filename>\n", argv[0]); + exit (-1); + } + + loop = g_main_loop_new (NULL, FALSE); + + /* Creating the GstPlay object */ + play = gst_play_new (); + + /* Getting default audio and video plugins from GConf */ + audio_sink = gst_element_factory_make ("osssink", "audio_sink"); + video_sink = gst_element_factory_make ("xvimagesink", "video_sink"); + vis_element = gst_element_factory_make ("goom", "vis_element"); + data_src = gst_element_factory_make ("gnomevfssrc", "source"); + + /* Let's send them to GstPlay object */ + gst_play_set_audio_sink (play, audio_sink); + gst_play_set_video_sink (play, video_sink); + gst_play_set_data_src (play, data_src); + gst_play_set_visualization (play, vis_element); + + /* Setting location we want to play */ + gst_play_set_location (play, argv[1]); + + /* gst_xml_write_file (GST_ELEMENT (play), stdout); */ + + g_signal_connect (G_OBJECT (play), "time_tick", + G_CALLBACK (got_time_tick), NULL); + g_signal_connect (G_OBJECT (play), "stream_length", + G_CALLBACK (got_stream_length), NULL); + g_signal_connect (G_OBJECT (play), "have_video_size", + G_CALLBACK (got_video_size), NULL); + g_signal_connect (G_OBJECT (play), "found_tag", + G_CALLBACK (got_found_tag), NULL); + g_signal_connect (G_OBJECT (play), "eos", + G_CALLBACK (got_eos), NULL); + + /* Change state to PLAYING */ + gst_element_set_state (GST_ELEMENT (play), GST_STATE_PLAYING); + + g_idle_add ((GSourceFunc) idle_iterate, play); + g_timeout_add (20000, (GSourceFunc) seek_timer, play); + + g_main_loop_run (loop); + + /* unref */ + gst_object_unref (GST_OBJECT (play)); + + exit (0); +} diff --git a/tests/old/examples/seek/vorbisfile.c b/tests/old/examples/seek/vorbisfile.c index 29fc18cfe..f191aa7b8 100644 --- a/tests/old/examples/seek/vorbisfile.c +++ b/tests/old/examples/seek/vorbisfile.c @@ -12,78 +12,27 @@ struct probe_context { gint total_ls; - GstCaps *metadata; - GstCaps *streaminfo; - GstCaps *caps; + GstCaps2 *metadata; + GstCaps2 *streaminfo; + GstCaps2 *caps; }; static void -print_caps (GstCaps *caps) +print_caps (GstCaps2 *caps) { - if (caps == NULL) return; - if (!strcmp (gst_caps_get_mime (caps), "application/x-gst-metadata") || - !strcmp (gst_caps_get_mime (caps), "application/x-gst-streaminfo")) - { - GstProps *props = caps->properties; - GList *walk; - /* ugly hack, but ok for now. If needed, fix by individual strcmp */ - g_print (" %s:\n", gst_caps_get_mime (caps) + 18); - if (props == NULL) { - g_print (" none\n"); - return; - } - walk = props->properties; - - while (walk) { - GstPropsEntry *entry = (GstPropsEntry *) walk->data; - const gchar *name; - const gchar *str_val; - gint int_val; - GstPropsType type; - - name = gst_props_entry_get_name (entry); - type = gst_props_entry_get_props_type (entry); - switch (type) { - case GST_PROPS_STRING_TYPE: - gst_props_entry_get_string (entry, &str_val); - g_print (" %s='%s'\n", name, str_val); - break; - case GST_PROPS_INT_TYPE: - gst_props_entry_get_int (entry, &int_val); - g_print (" %s=%d\n", name, int_val); - break; - default: - break; - } - walk = g_list_next (walk); - } - } - else { - g_print (" unkown caps type\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" %s\n", s); + g_free (s); } static void -print_format (GstCaps *caps) +print_format (GstCaps2 *caps) { - g_print (" format:\n"); - if (!caps || caps->properties == NULL) { - g_print (" unkown\n"); - return; - } - if (!strcmp (gst_caps_get_mime (caps), "audio/raw")) { - gint channels; - gint rate; - - gst_caps_get_int (caps, "channels", &channels); - gst_caps_get_int (caps, "rate", &rate); - - g_print (" channels: %d\n", channels); - g_print (" rate: %d\n", rate); - } - else { - g_print (" unkown format\n"); - } + char *s; + s = gst_caps2_to_string (caps); + g_print(" format: %s\n", s); + g_free (s); } static void diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am index 629d896ed..9d43a4f28 100644 --- a/testsuite/Makefile.am +++ b/testsuite/Makefile.am @@ -4,8 +4,8 @@ else ALSA_DIR= endif -SUBDIRS=autoplug spider $(ALSA_DIR) #seeking -DIST_SUBDIRS=autoplug spider alsa +SUBDIRS=spider $(ALSA_DIR) #seeking +DIST_SUBDIRS=spider alsa GST_PLUGIN_PATH=$(shell cd $(top_builddir) && pwd) diff --git a/testsuite/autoplug/.gitignore b/testsuite/autoplug/.gitignore deleted file mode 100644 index 46e2b3767..000000000 --- a/testsuite/autoplug/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -autoplug -autoplug2 -autoplug3 -autoplug4 diff --git a/testsuite/autoplug/Makefile.am b/testsuite/autoplug/Makefile.am deleted file mode 100644 index a0b79c63e..000000000 --- a/testsuite/autoplug/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ - -# none work currently -TESTS = - -check_PROGRAMS = autoplug autoplug2 autoplug3 autoplug4 - -# we have nothing but apps here, we can do this safely -LIBS = $(GST_LIBS) -AM_CFLAGS = $(GST_CFLAGS) - diff --git a/testsuite/autoplug/autoplug.c b/testsuite/autoplug/autoplug.c deleted file mode 100644 index 2adca3036..000000000 --- a/testsuite/autoplug/autoplug.c +++ /dev/null @@ -1,46 +0,0 @@ -#include <gst/gst.h> - -/* FIXME: add a description of what this test does */ -static void -new_object_added (GstAutoplug *autoplug, GstObject *object) -{ - g_print ("added new object \"%s\"\n", gst_object_get_name (object)); -} - -int -main (int argc, char *argv[]) -{ - GstElement *element; - GstElement *videosink, *osssink; - GstAutoplug *autoplugger; - GstCaps *testcaps; - - gst_init(&argc,&argv); - - osssink = gst_element_factory_make ("osssink", "osssink"); - g_assert (osssink != NULL); - videosink = gst_element_factory_make ("xvideosink", "videosink"); - g_assert (videosink != NULL); - - testcaps = gst_caps_new ("test_caps", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)); - - autoplugger = gst_autoplug_factory_make ("static"); - - g_signal_connect (G_OBJECT (autoplugger), "new_object", - G_CALLBACK (new_object_added), NULL); - - element = gst_autoplug_to_caps (autoplugger, testcaps, - gst_pad_get_caps (gst_element_get_pad (osssink, "sink")), - gst_pad_get_caps (gst_element_get_pad (videosink, "sink")), - NULL); - g_assert (element != NULL); - - xmlDocDump (stdout, gst_xml_write (element)); - - exit (0); -} diff --git a/testsuite/autoplug/autoplug2.c b/testsuite/autoplug/autoplug2.c deleted file mode 100644 index e046a4c7a..000000000 --- a/testsuite/autoplug/autoplug2.c +++ /dev/null @@ -1,87 +0,0 @@ -#include <gst/gst.h> - -static GstElement* -autoplug_caps (GstAutoplug *autoplug, gchar *mime1, gchar *mime2) -{ - GstCaps *caps1, *caps2; - - caps1 = gst_caps_new ("tescaps1", mime1, NULL); - caps2 = gst_caps_new ("tescaps2", mime2, NULL); - - return gst_autoplug_to_caps (autoplug, caps1, caps2, NULL); -} - -int -main (int argc, char *argv[]) -{ - GstElement *element; - GstAutoplug *autoplug; - - gst_init(&argc,&argv); - - autoplug = gst_autoplug_factory_make ("static"); - - g_print ("Autoplugging between audio/x-mp3 and audio/raw ...\n"); - if ((element = autoplug_caps (autoplug, "audio/x-mp3", "audio/raw")) == NULL) - g_print ("Could not autoplug between audio/x-mp3 and audio/raw !\n"); - xmlSaveFile ("autoplug2_1.gst", gst_xml_write (element)); - - g_print ("Autoplugging between video/mpeg and audio/raw ...\n"); - if ((element = autoplug_caps (autoplug, "video/mpeg", "audio/raw")) == NULL) - g_print ("Could not autoplug between video/mpeg and audio/raw !\n"); - else - xmlSaveFile ("autoplug2_2.gst", gst_xml_write (element)); - - if ((element = gst_autoplug_to_caps (autoplug, - gst_caps_new( - "testcaps3", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)), - gst_caps_new("testcaps4","audio/raw", NULL), - NULL)) == NULL) - g_print ("Could not autoplug between video/mpeg system stream and audio/raw !\n"); - else - xmlSaveFile ("autoplug2_3.gst", gst_xml_write (element)); - - element = gst_autoplug_to_caps (autoplug, - gst_caps_new( - "testcaps5", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE), - NULL)), - gst_caps_new("testcaps6", "video/raw", NULL), - NULL); - g_assert (GST_IS_ELEMENT (element)); - xmlSaveFile ("autoplug2_4.gst", gst_xml_write (element)); - - element = gst_autoplug_to_caps (autoplug, - gst_caps_new( - "testcaps7", - "video/x-msvideo", NULL), - gst_caps_new("testcaps8", "video/raw", NULL), - gst_caps_new("testcaps9", "audio/raw", NULL), - NULL); - g_assert (GST_IS_ELEMENT (element)); - xmlSaveFile ("autoplug2_5.gst", gst_xml_write (element)); - - element = gst_autoplug_to_caps (autoplug, - gst_caps_new( - "testcaps10", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)), - gst_caps_new("testcaps10", "video/raw", NULL), - gst_caps_new("testcaps11", "audio/raw", NULL), - NULL); - g_assert (GST_IS_ELEMENT (element)); - xmlSaveFile ("autoplug2_6.gst", gst_xml_write (element)); - - exit (0); -} diff --git a/testsuite/autoplug/autoplug3.c b/testsuite/autoplug/autoplug3.c deleted file mode 100644 index a332053ab..000000000 --- a/testsuite/autoplug/autoplug3.c +++ /dev/null @@ -1,50 +0,0 @@ -#include <gst/gst.h> - -int -main (int argc, char *argv[]) -{ - GstAutoplug *autoplug; - GstElement *element; - GstElement *sink; - GstElement *pipeline; - GstElement *filesrc; - - gst_init(&argc,&argv); - - sink = gst_element_factory_make ("osssink", "osssink"); - g_assert (sink != NULL); - - autoplug = gst_autoplug_factory_make ("staticrender"); - g_assert (autoplug != NULL); - - element = gst_autoplug_to_renderers (autoplug, - gst_caps_new ( - "mp3caps", - "audio/x-mp3", - NULL - ), - sink, - NULL); - g_assert (element != NULL); - - pipeline = gst_pipeline_new ("main_pipeline"); - g_assert (pipeline != NULL); - - filesrc = gst_element_factory_make ("filesrc", "disk_reader"); - g_assert (filesrc != NULL); - - gst_bin_add (GST_BIN (pipeline), filesrc); - gst_bin_add (GST_BIN (pipeline), element); - - gst_element_link_pads (filesrc, "src", element, "sink"); - - g_object_set (G_OBJECT (filesrc), "location", argv[1], NULL); - - gst_element_set_state (pipeline, GST_STATE_PLAYING); - - while (gst_bin_iterate (GST_BIN (pipeline))); - - gst_element_set_state (pipeline, GST_STATE_NULL); - - exit (0); -} diff --git a/testsuite/autoplug/autoplug4.c b/testsuite/autoplug/autoplug4.c deleted file mode 100644 index b7f3f34fc..000000000 --- a/testsuite/autoplug/autoplug4.c +++ /dev/null @@ -1,102 +0,0 @@ -#include <gst/gst.h> - -int -main (int argc, char *argv[]) -{ - GstElement *element; - GstElement *sink1, *sink2; - GstAutoplug *autoplug; - GstAutoplug *autoplug2; - - gst_init(&argc,&argv); - - sink1 = gst_element_factory_make ("videosink", "videosink"); - sink2 = gst_element_factory_make ("osssink", "osssink"); - - autoplug = gst_autoplug_factory_make ("staticrender"); - autoplug2 = gst_autoplug_factory_make ("static"); - - element = gst_autoplug_to_renderers (autoplug, - gst_caps_new ("mp3caps", "audio/x-mp3", NULL), sink2, NULL); - xmlSaveFile ("autoplug3_1.gst", gst_xml_write (element)); - - element = gst_autoplug_to_renderers (autoplug, - gst_caps_new ("mpeg1caps", "video/mpeg", NULL), sink1, NULL); - if (element) { - xmlSaveFile ("autoplug3_2.gst", gst_xml_write (element)); - } - - element = gst_autoplug_to_caps (autoplug2, - gst_caps_new( - "testcaps3", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)), - gst_caps_new("testcaps4","audio/raw", NULL), - NULL); - if (element) { - xmlSaveFile ("autoplug3_3.gst", gst_xml_write (element)); - } - - element = gst_autoplug_to_caps (autoplug2, - gst_caps_new( - "testcaps5", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (FALSE), - NULL)), - gst_caps_new("testcaps6", "video/raw", NULL), - NULL); - if (element) { - xmlSaveFile ("autoplug3_4.gst", gst_xml_write (element)); - } - - element = gst_autoplug_to_caps (autoplug2, - gst_caps_new( - "testcaps7", - "video/x-msvideo", NULL), - gst_caps_new("testcaps8", "video/raw", NULL), - gst_caps_new("testcaps9", "audio/raw", NULL), - NULL); - if (element) { - xmlSaveFile ("autoplug3_5.gst", gst_xml_write (element)); - } - - element = gst_autoplug_to_caps (autoplug2, - gst_caps_new( - "testcaps10", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)), - gst_caps_new("testcaps10", "video/raw", NULL), - gst_caps_new("testcaps11", "audio/raw", NULL), - NULL); - if (element) { - xmlSaveFile ("autoplug3_6.gst", gst_xml_write (element)); - } - - sink1 = gst_element_factory_make ("videosink", "videosink"); - sink2 = gst_element_factory_make ("osssink", "osssink"); - - element = gst_autoplug_to_renderers (autoplug, - gst_caps_new( - "testcaps10", - "video/mpeg", - gst_props_new ( - "mpegversion", GST_PROPS_INT (1), - "systemstream", GST_PROPS_BOOLEAN (TRUE), - NULL)), - sink1, - sink2, - NULL); - if (element) { - xmlSaveFile ("autoplug3_7.gst", gst_xml_write (element)); - } - - exit (0); -} diff --git a/tools/gst-launch-ext.in b/tools/gst-launch-ext.in index 5ff7f7ad3..643ba8775 100755 --- a/tools/gst-launch-ext.in +++ b/tools/gst-launch-ext.in @@ -103,8 +103,8 @@ read_config ($0); %pipes = ( "ac3", "a52dec ! $cfg{AUDIOSINK}", "au", "auparse ! $cfg{AUDIOSINK}", - "avi", "avidemux name=demux ! { queue ! jpegdec ! $cfg{VIDEOSINK} } { demux. ! queue ! mad ! $cfg{AUDIOSINK} }", - "asf", "asfdemux name=demux ! { queue ! ffmpegdecall ! $cfg{VIDEOSINK} } { demux. ! queue ! mad ! $cfg{AUDIOSINK} }", + "avi", "avidemux name=demux ! { queue ! spider ! $cfg{VIDEOSINK} } { demux. ! queue ! spider ! $cfg{AUDIOSINK} }", + "asf", "asfdemux name=demux ! { queue ! spider ! $cfg{VIDEOSINK} } { demux. ! queue ! spider ! $cfg{AUDIOSINK} }", "flac", "flacdec ! $cfg{AUDIOSINK}", "fli", "flxdec ! colorspace ! $cfg{VIDEOSINK}", "m1v", "mpegdemux ! { queue ! mpeg2dec ! $cfg{VIDEOSINK} }", @@ -120,10 +120,12 @@ read_config ($0); "swf", "swfdec name=swfdec ! { queue ! colorspace ! $cfg{VIDEOSINK} } { swfdec. ! queue ! $cfg{AUDIOSINK} }", "vob", "mpegdemux name=demux ! { queue ! mpeg2dec ! $cfg{VIDEOSINK} } { demux. ! queue ! a52dec ! $cfg{AUDIOSINK} }", "wav", "wavparse ! $cfg{AUDIOSINK}", - "wm", "asfdemux name=demux ! { queue ! ffmpegdecall ! $cfg{VIDEOSINK} } { demux. ! queue ! mad ! $cfg{AUDIOSINK} }", + "wm", "asfdemux name=demux ! { queue ! spider ! $cfg{VIDEOSINK} } { demux. ! queue ! spider ! $cfg{AUDIOSINK} }", ### a wma file can use wmav1 or wmav2 codec so we must use spider to decode it "wma", "asfdemux name=demux ! spider ! $cfg{AUDIOSINK}", - "wmv", "asfdemux name=demux ! { queue ! ffmpegdecall ! $cfg{VIDEOSINK} } { demux. ! queue ! mad ! $cfg{AUDIOSINK} }", + "wmv", "asfdemux name=demux ! { queue ! spider ! $cfg{VIDEOSINK} } { demux. ! queue ! spider ! $cfg{AUDIOSINK} }", + "mkv", "matroskademux name=demux ! { queue ! spider ! $cfg{VIDEOSINK} } { demux. ! queue ! spider ! $cfg{AUDIOSINK} }", + "mka", "matroskademux ! spider ! $cfg{AUDIOSINK}", ); if ($cfg{VISUALIZER}) { |