summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-11-30 18:41:04 +0100
committerwm4 <wm4@nowhere>2012-12-03 21:08:51 +0100
commitdd3260185ac4a04277fc550ca2206cc29bf68bc6 (patch)
treea8c6b4365c8fdc8fad13e58d04b85639e0f4fb01 /configure
parentaa2c07542f11ee8ab6df0949635ee453952213dd (diff)
downloadmpv-dd3260185ac4a04277fc550ca2206cc29bf68bc6.tar.bz2
mpv-dd3260185ac4a04277fc550ca2206cc29bf68bc6.tar.xz
demux_lavf: add support for libavdevice
libavdevice supports various "special" video and audio inputs, such as screen-capture or libavfilter filter graphs. libavdevice inputs are implemented as demuxers. They don't use the custom stream callbacks (in AVFormatContext.pb). Instead, input parameters are passed as filename. This means the mpv stream layer has to be disabled. Do this by adding the pseudo stream handler avdevice://, whose only purpose is passing the filename to demux_lavf, without actually doing anything. Change the logic how the filename is passed to libavformat. Remove handling of the filename from demux_open_lavf() and move it to lavf_check_file(). (This also fixes a possible bug when skipping the "lavf://" prefix.) libavdevice now can be invoked by specifying demuxer and args as in: mpv avdevice://demuxer:args The args are passed as filename to libavformat. When using libavdevice demuxers, their actual meaning is highly implementation specific. They don't refer to actual filenames. Note: libavdevice is disabled by default. There is one problem: libavdevice pulls in libavfilter, which in turn causes symbol clashes with mpv internals. The problem is that libavfilter includes a mplayer filter bridge, which is used to interface with a set of nearly unmodified mplayer filters copied into libavfilter. This filter bridge uses the same symbol names as mplayer/mpv's filter chain, which results in symbol clashes at link-time. This can be prevented by building ffmpeg with --disable-filter=mp, but unfortunately this is not the default. This means linking to libavdevice (which in turn forces linking with libavfilter by default) must be disabled. We try doing this by compiling a test file that defines one of the clashing symbols (vf_mpi_clear). To enable libavdevice input, ffmpeg should be built with the options: --disable-filter=mp and mpv with: --enable-libavdevice Originally, I tried to auto-detect it. But the resulting complications in configure did't seem worth the trouble.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure42
1 files changed, 42 insertions, 0 deletions
diff --git a/configure b/configure
index 7d8c68dec3..9784addbad 100755
--- a/configure
+++ b/configure
@@ -333,6 +333,8 @@ Optional features:
--disable-libass-osd disable OSD rendering with libass [autodetect]
--enable-rpath enable runtime linker path for extra libs [disabled]
--disable-libpostproc disable postprocess filter (vf_pp) [autodetect]
+ --enable-libavdevice enable libavdevice demuxers [disabled]
+ --enable-libavfilter enable libavfilter [disabled] [unused]
Codecs:
--enable-gif enable GIF support [autodetect]
@@ -490,6 +492,8 @@ _ass=auto
_libass_osd=auto
_rpath=no
libpostproc=auto
+libavfilter=no
+libavdevice=no
_asmalign_pot=auto
_stream_cache=yes
_priority=no
@@ -707,6 +711,10 @@ for ac_option do
--disable-rpath) _rpath=no ;;
--enable-libpostproc) libpostproc=yes ;;
--disable-libpostproc) libpostproc=no ;;
+ --enable-libavdevice) libavdevice=auto ;;
+ --disable-libavdevice) libavdevice=no ;;
+ --enable-libavfilter) libavfilter=auto ;;
+ --disable-libavfilter) libavfilter=no ;;
--enable-enca) _enca=yes ;;
--disable-enca) _enca=no ;;
@@ -2824,6 +2832,36 @@ else
fi
+echocheck "libavfilter >= 3.17.0"
+if test "$libavfilter" = auto ; then
+ libavfilter=no
+ if pkg_config_add "libavfilter >= 3.17.0" ; then
+ libavfilter=yes
+ fi
+fi
+if test "$libavfilter" = yes ; then
+ def_libavfilter='#define CONFIG_LIBAVFILTER 1'
+else
+ def_libavfilter='#undef CONFIG_LIBAVFILTER'
+fi
+echores "$libavfilter"
+
+
+echocheck "libavdevice >= 54.0.0"
+if test "$libavdevice" = auto ; then
+ libavdevice=no
+ if pkg_config_add "libavdevice >= 54.0.0" ; then
+ libavdevice=yes
+ fi
+fi
+if test "$libavdevice" = yes ; then
+ def_libavdevice='#define CONFIG_LIBAVDEVICE 1'
+else
+ def_libavdevice='#undef CONFIG_LIBAVDEVICE'
+fi
+echores "$libavdevice"
+
+
echocheck "libpostproc >= 52.0.0"
if test "$libpostproc" = auto ; then
libpostproc=no
@@ -3245,6 +3283,8 @@ LIBBLURAY = $_bluray
LIBBS2B = $_libbs2b
LCMS2 = $_lcms2
LIBPOSTPROC = $libpostproc
+LIBAVDEVICE = $libavdevice
+LIBAVFILTER = $libavfilter
LIBSMBCLIENT = $_smb
LIBQUVI = $_libquvi
LIBTHEORA = $_theora
@@ -3403,6 +3443,8 @@ $def_mpg123
$def_zlib
$def_libpostproc
+$def_libavdevice
+$def_libavfilter
/* Audio output drivers */