0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00
mpv/core
wm4 dd3260185a 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.
2012-12-03 21:08:51 +01:00
..
input command: add sub_reload and sub_remove commands 2012-11-16 21:21:15 +01:00
timeline clang: fix all warnings except deprecations 2012-11-13 22:19:18 +01:00
asxparser.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
asxparser.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
av_log.c demux_lavf: add support for libavdevice 2012-12-03 21:08:51 +01:00
av_log.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
av_opts.c Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
av_opts.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
bstr.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
bstr.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
cfg-mplayer.h sub: add --sub-gray option to display image subs in grayscale 2012-11-25 23:40:07 +01:00
codec-cfg.c mplayer: disable auto-loading of external codecs.conf 2012-11-20 18:00:15 +01:00
codec-cfg.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
command.c osd: fix OSD status symbol display in some cases 2012-11-20 18:00:16 +01:00
command.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
cpudetect.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
cpudetect.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
defaultopts.c osd: make the OSD and sub font more customizable 2012-11-20 18:00:15 +01:00
defaultopts.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
encode_lavc.c encode: print on log which muxers/codecs are in use 2012-12-01 17:15:44 +01:00
encode_lavc.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
encode.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
m_config.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
m_config.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
m_option.c m_option: print valid integer range for choices on parsing errors 2012-11-20 18:00:15 +01:00
m_option.h m_option: add color option type 2012-11-20 18:00:15 +01:00
m_property.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
m_property.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
m_struct.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
m_struct.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
mp_common.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
mp_common.h mp_common.h: split parts into mp_talloc.h and compiler.h 2012-11-12 20:08:57 +01:00
mp_core.h osd: fix OSD status symbol display in some cases 2012-11-20 18:00:16 +01:00
mp_fifo.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
mp_fifo.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
mp_msg.c build: remove doc/locale language auto-detection, simplify 2012-11-14 11:26:43 +01:00
mp_msg.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
mp_osd.h core: minor cleanups 2012-11-20 18:00:16 +01:00
mp_talloc.h mp_common.h: split parts into mp_talloc.h and compiler.h 2012-11-12 20:08:57 +01:00
mpc_info.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
mplayer.c mplayer: fix track language display 2012-11-25 23:40:07 +01:00
mplayer.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
options.h sub: add --sub-gray option to display image subs in grayscale 2012-11-25 23:40:07 +01:00
parser-cfg.c Fix potential bugs and issues, general cleanups 2012-11-20 18:00:14 +01:00
parser-cfg.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
parser-mpcmd.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
parser-mpcmd.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
path.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
path.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
playlist_parser.c options: rename -ss and -endpos, allow relative times 2012-11-16 21:21:15 +01:00
playlist_parser.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
playlist.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
playlist.h Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
quvi.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
screenshot.c screenshot: add subs even with vf_screenshot 2012-11-21 19:58:51 +01:00
screenshot.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
subopt-helper.c Rename directories, move files (step 2 of 2) 2012-11-12 20:08:18 +01:00
subopt-helper.h Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00
version.c Rename directories, move files (step 1 of 2) (does not compile) 2012-11-12 20:06:14 +01:00