[FFmpeg-trac] #483(build system:new): libavformat needs timefilter for OUTDEV as well as INDEV

FFmpeg trac at avcodec.org
Sun Sep 18 04:09:46 CEST 2011

#483: libavformat needs timefilter for OUTDEV as well as INDEV
             Reporter:  skierpage    |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  build        |                  Version:  git-
  system                             |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
 (I'm building from git to debug some QCELP audio playback problems.)
 From "Get FFmpeg" I downloaded git snapshot. I don't need all of ffmpeg so
 I tried

 % ./configure --prefix=/home/skierpage/src/ffmpeg  --disable-network
 % make

 This errors with
 LD      ffmpeg_g
 libavdevice/libavdevice.a(alsa-audio-common.o): In function
 common.c:322: undefined reference to `ff_timefilter_destroy'
 collect2: ld returned 1 exit status
 Reaping losing child 0x01d24890 PID 11332
 make: *** [ffmpeg_g] Error 1
 It's building alsa because configure detects HAVE_ALSA_ASOUNDLIB_H on my
 system, so config.mak sets CONFIG_ALSA_OUTDEV=yes.  At first I thought the
 problem was, like like libavdevice/jack-audio.c , libavdevice/alsa-audio-
 common.c needs to add
   #include "libavformat/timefilter.h"
 but that doesn't help.

 It seems the problem is libavformat's Makefile only compiles in
 timefilter.c if CONFIG_ALSA_INDEV is set.  But you still need timefilter
 if you have no input device named alsa (e.g. because you configure with
 --disable-indevs) but you have an alsa outdev. A dumb patch that allows
 make to complete and results in working avconv is
 --- libavformat/Makefile.org    2011-09-17 13:36:43.000000000 -0700
 +++ libavformat/Makefile        2011-09-17 18:00:02.698529430 -0700
 @@ -347,6 +347,7 @@

  # libavdevice dependencies
  OBJS-$(CONFIG_ALSA_INDEV)                += timefilter.o
 +OBJS-$(CONFIG_ALSA_OUTDEV)               += timefilter.o
  OBJS-$(CONFIG_JACK_INDEV)                += timefilter.o

 I suspect if configure detects Jack audio and you've disabled input
 devices, the Makefile will need a similar line for CONFIG_JACK_OUTDEV.

 I hope this helps. Thank you for ffmpeg's massive AV format support.

Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/483>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list