summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------common0
-rw-r--r--configure.ac6
-rw-r--r--ext/Makefile.am14
-rw-r--r--ext/flac/gstflacdec.c10
-rw-r--r--m4/as-ffmpeg.m499
-rwxr-xr-xtools/gst-launch-ext4
6 files changed, 122 insertions, 11 deletions
diff --git a/common b/common
-Subproject 1ca7d9a20180cab830f4383cde5ba932338e50b
+Subproject f2d9b99515c73da09bfe307d273d320f79a226d
diff --git a/configure.ac b/configure.ac
index a349bfca..599e8343 100644
--- a/configure.ac
+++ b/configure.ac
@@ -504,6 +504,12 @@ GST_CHECK_FEATURE(FLAC, [FLAC lossless audio], flacenc flacdec, [
AC_SUBST(FLAC_LIBS)
])
+dnl *** FFMPEG ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_FFMPEG, true)
+GST_CHECK_FEATURE(FFMPEG, [ffmpeg plug-ins], ffmpeg, [
+ AM_PATH_FFMPEG(0.4.6, HAVE_FFMPEG=yes, HAVE_FFMPEG=no)
+])
+
dnl *** Gnome VFS ***
translit(dnm, m, l) AM_CONDITIONAL(USE_GNOME_VFS, true)
GST_CHECK_FEATURE(GNOME_VFS, [Gnome VFS], gnomevfssrc, [
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 763c6776..c2a973f3 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -76,6 +76,12 @@ else
GSM_DIR=
endif
+if USE_FFMPEG
+FFMPEG_DIR=ffmpeg
+else
+FFMPEG_DIR=
+endif
+
if USE_FLAC
FLAC_DIR=flac
else
@@ -142,12 +148,6 @@ else
LIBFAME_DIR=
endif
-if USE_LIBPNG
-LIBPNG_DIR=libpng
-else
-LIBPNG_DIR=
-endif
-
if USE_MAD
MAD_DIR=mad
else
@@ -242,7 +242,7 @@ SUBDIRS=$(A52DEC_DIR) $(AALIB_DIR) $(ALSA_DIR) \
$(ARTS_DIR) $(ARTSC_DIR) $(AUDIOFILE_DIR) \
$(AVIFILE_DIR) $(CDPARANOIA_DIR) \
$(DVDREAD_DIR) $(DVDNAV_DIR) $(ESD_DIR) \
- $(FLAC_DIR) $(GNOMEVFS_DIR) $(GSM_DIR) \
+ $(FFMPEG_DIR) $(FLAC_DIR) $(GNOMEVFS_DIR) $(GSM_DIR) \
$(HERMES_DIR) $(HTTP_DIR) $(JACK_DIR) $(JPEG_DIR) \
$(LADSPA_DIR) $(LAME_DIR) $(LCS_DIR) $(LIBDV_DIR) $(LIBFAME_DIR) \
$(MAD_DIR) $(MIKMOD_DIR) $(MJPEGTOOLS_DIR) $(MPEG2DEC_DIR) \
diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c
index ac939c36..ef782e03 100644
--- a/ext/flac/gstflacdec.c
+++ b/ext/flac/gstflacdec.c
@@ -433,9 +433,11 @@ gst_flacdec_loop (GstElement *element)
flacdec = GST_FLACDEC (element);
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: entering loop");
if (flacdec->init) {
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: initializing decoder");
FLAC__seekable_stream_decoder_init (flacdec->decoder);
- //FLAC__seekable_stream_decoder_process_metadata (flacdec->decoder);
+ /* FLAC__seekable_stream_decoder_process_metadata (flacdec->decoder); */
flacdec->init = FALSE;
}
@@ -455,19 +457,23 @@ gst_flacdec_loop (GstElement *element)
flacdec->seek_pending = FALSE;
}
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: processing single");
res = FLAC__seekable_stream_decoder_process_single (flacdec->decoder);
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: checking for EOS");
if (FLAC__seekable_stream_decoder_get_state (flacdec->decoder) ==
FLAC__SEEKABLE_STREAM_DECODER_END_OF_STREAM)
{
GstEvent *event;
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: sending EOS event");
FLAC__seekable_stream_decoder_finish(flacdec->decoder);
flacdec->init = TRUE;
- event = gst_event_new(GST_EVENT_EOS);
+ event = gst_event_new (GST_EVENT_EOS);
gst_pad_push (flacdec->srcpad, GST_BUFFER (event));
gst_element_set_eos (element);
}
+ GST_DEBUG (GST_CAT_PLUGIN_INFO, "flacdec: _loop end");
}
GST_FORMATS_FUNCTION (gst_flacdec_get_src_formats,
diff --git a/m4/as-ffmpeg.m4 b/m4/as-ffmpeg.m4
new file mode 100644
index 00000000..612224c8
--- /dev/null
+++ b/m4/as-ffmpeg.m4
@@ -0,0 +1,99 @@
+# CFLAGS and library paths for FFMPEG
+# taken from Autostar Sandbox, http://autostars.sourceforge.net/
+
+dnl Usage:
+dnl AM_PATH_FFMPEG([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl FIXME: version checking does not work currently
+dnl
+dnl Example:
+dnl AM_PATH_FFMPEG(0.4.6, , AC_MSG_ERROR([*** FFMPEG >= 0.4.6 not installed))
+dnl
+dnl Defines FFMPEG_LIBS
+dnl FIXME: should define FFMPEG_VERSION
+dnl
+
+AC_DEFUN(AM_PATH_FFMPEG,
+[
+ dnl allow for specification of a source path (for uninstalled)
+ AC_ARG_WITH(ffmpeg-source,
+ AC_HELP_STRING([--with-ffmpeg-source=DIR],
+ [Directory where FFmpeg source is (optional)]),
+ ffmpeg_source="$withval", ffmpeg_source="")
+
+ dnl save CFLAGS and LIBS here
+ CFLAGS_save=$CFLAGS
+ LIBS_save=$LIBS
+ if test "x$ffmpeg_source" != "x"; then
+ dnl uninstalled FFmpeg copy
+ AC_MSG_NOTICE([Looking for FFmpeg source in $ffmpeg_source])
+ CFLAGS="-I$ffmpeg_source/libav -I$ffmpeg_source/libavcodec"
+ LIBS="-L$ffmpeg_source/libav -L$ffmpeg_source/libavcodec"
+ AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, 1,
+ [defined if we compile against uninstalled FFmpeg])
+ FFMPEG_COMMON_INCLUDE="#include <common.h>"
+ else
+ FFMPEG_COMMON_INCLUDE="#include <ffmpeg/common.h>"
+ fi
+
+ dnl check for libavcodec
+ AC_CHECK_LIB(avcodec, avcodec_init, HAVE_FFMPEG=yes, HAVE_FFMPEG=no)
+
+ dnl check for avcodec.h and avformat.h
+ if test "x$ffmpeg_source" != "x"; then
+ dnl uninstalled
+ AC_CHECK_HEADER(avcodec.h, , HAVE_FFMPEG=no, [/* only compile */])
+ AC_CHECK_HEADER(avformat.h, , HAVE_FFMPEG=no, [/* only compile */])
+ else
+ AC_CHECK_HEADER(ffmpeg/avcodec.h, , HAVE_FFMPEG=no)
+ AC_CHECK_HEADER(ffmpeg/avformat.h, , HAVE_FFMPEG=no)
+ fi
+
+dnl now check if it's sufficiently new
+
+ AC_LANG_SAVE()
+ AC_LANG_C()
+
+ dnl FIXME: we use strcmp, which we know is going to break if ffmpeg ever uses
+ dnl two digits for any of their version numbers. It makes the test so much
+ dnl easier though so let's ignore that
+ AC_TRY_RUN([
+$FFMPEG_COMMON_INCLUDE
+#include <stdio.h>
+#include <string.h>
+
+int
+main ()
+{
+ if (strcmp (FFMPEG_VERSION, "$1") == -1)
+ {
+ fprintf (stderr,
+ "ERROR: your copy of ffmpeg is too old (%s)\n", FFMPEG_VERSION);
+ return 1;
+ }
+ else
+ return 0;
+}
+], , HAVE_FFMPEG=no)
+
+dnl now do the actual "do we have it ?" test
+ if test "x$HAVE_FFMPEG" = "xyes"; then
+ FFMPEG_LIBS="$LIBS -lavcodec -lavformat"
+ FFMPEG_CFLAGS="$CFLAGS"
+ AC_MSG_NOTICE(we have ffmpeg)
+ dnl execute what we have to because it's found
+ ifelse([$2], , :, [$2])
+ else
+ FFMPEG_LIBS=""
+ FFMPEG_CFLAGS=""
+ dnl execute what we have to because it's not found
+ ifelse([$3], , :, [$3])
+ fi
+
+dnl make variables available
+ AC_SUBST(FFMPEG_LIBS)
+ AC_SUBST(FFMPEG_CFLAGS)
+ AC_SUBST(HAVE_FFMPEG)
+ AC_LANG_RESTORE()
+ CFLAGS=$CFLAGS_save
+ LIBS=$LIBS_save
+])
diff --git a/tools/gst-launch-ext b/tools/gst-launch-ext
index aab72f87..4ac01bb5 100755
--- a/tools/gst-launch-ext
+++ b/tools/gst-launch-ext
@@ -69,13 +69,13 @@ sub playfile($$)
if ($cfg{VISUALIZER} && ($pipe = $pipes{"vis." . $ext}))
{
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
- print "Running $command\n";
+ print "Running command-line\n$command\n\n";
system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command");
}
elsif ($pipe = $pipes{$ext})
{
$command = "gst-launch filesrc location=\"$file\" ! $pipe";
- print "Running $command\n";
+ print "Running command-line\n$command\n\n";
system ("PATH=\$PATH:".$cfg{CVS_PATH}."/gstreamer/tools $command");
}
else