From dbb97e6823269a9c97074aebc5ec8297b119a437 Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Tue, 26 Nov 2002 14:51:34 +0000 Subject: flac debug cleanup m4 for ffmpeg Original commit message from CVS: flac debug cleanup m4 for ffmpeg --- common | 2 +- configure.ac | 6 ++++ ext/Makefile.am | 14 ++++---- ext/flac/gstflacdec.c | 10 ++++-- m4/as-ffmpeg.m4 | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++ tools/gst-launch-ext | 4 +-- 6 files changed, 123 insertions(+), 12 deletions(-) create mode 100644 m4/as-ffmpeg.m4 diff --git a/common b/common index 1ca7d9a2..f2d9b995 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 1ca7d9a20180cab830f4383cde5ba932338e50b1 +Subproject commit f2d9b99515c73da09bfe307d273d320f79a226da 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 " + else + FFMPEG_COMMON_INCLUDE="#include " + 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 +#include + +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 -- cgit