1
mirror of https://github.com/mpv-player/mpv synced 2024-10-30 04:46:41 +01:00
Go to file
wm4 94782e464d options: get rid of ambiguous option parsing
Options parsing used to be ambiguous, as in the splitting into option
and values pairs was ambiguous. Example:

    -option -something

It wasn't clear whether -option actually takes an argument or not. The
string "-something" could either be a separate option, or an argument
to "-option". The code had to call the option specific parser function
to resolve this.

This made everything complicated and didn't even have a real use. There
was only one case where this was actually used: string lists
(m_option_type_string_list) and options based on it. That is because
this option type actually turns a single option into a proxy for several
real arguments, e.g. "vf*" can handle "-vf-add" and "-vf-clr". Options
suffixed with "-clr" are the only options of this group which take no
arguments.

This is ambiguous only with the "old syntax" (as shown above). The "new"
option syntax always puts option name and value into same argument.
(E.g. "--option=--something" or "--option" "--something".)

Simplify the code by making it statically known whether an option takes
a parameter or not with the flag M_OPT_TYPE_OLD_SYNTAX_NO_PARAM. If it's
set, the option parser assumes the option takes no argument.

The only real ambiguity left, string list options that end on "-clr",
are special cased in the parser.

Remove some duplication of the logic in the command line parser by
moving all argument splitting logic into split_opt(). (It's arguable
whether that can be considered code duplication, but now the code is a
bit simpler anyway. This might be subjective.)

Remove the "ambiguous" parameter from all option parsing related code.

Make m_config unaware of the pre-parsing concept.

Make most CONF_NOCFG options also CONF_GLOBAL (except those explicitly
usable as per-file options.)
2012-08-05 23:51:49 +02:00
debian debian: remove leftover references to deleted OSD menu files 2011-11-14 20:24:39 +02:00
DOCS stream: add new stream control command STREAM_CTRL_GET_NUM_TITLES 2012-08-03 01:43:03 +02:00
etc input.conf: put dvdnav commands under {dvdnav} 2012-08-05 15:50:41 +02:00
ffmpeg_files build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00
input options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
libaf reorder_ch: support reordering 8 channels to AAC layout 2012-08-03 03:34:38 +02:00
libao2 ao_alsa: cleanup use of vsnprintf 2012-08-03 02:18:29 +02:00
libmpcodecs vf_unsharp: direct rendering fixes 2012-08-03 03:38:45 +02:00
libmpdemux demuxer: introduce a general stream struct 2012-08-03 13:25:41 +02:00
libvo m_config: implement m_config_new in terms of m_config_simple 2012-08-04 19:59:56 +02:00
loader loader: remove weird kstat thing 2012-08-03 01:00:55 +02:00
osdep cache2: allow cache sizes up to 4 TB 2012-08-03 01:52:40 +02:00
rpm libmenu: remove OSD menu functionality (--menu) 2011-10-25 07:05:47 +03:00
stream options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
sub osd: free buffer allocated with av_malloc with av_free 2012-08-04 22:22:37 +02:00
timeline mp_msg: remove filename_recode 2012-07-31 01:35:53 +02:00
TOOLS TOOLS/fil2string.py: fix for use with binary files 2012-07-28 23:36:08 +02:00
.gitignore manpage: merge new manpage 2012-08-02 22:05:27 +02:00
asxparser.c Remove dead code 2012-08-01 17:07:35 +02:00
asxparser.h mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
AUTHORS documentation: remove Changelog, rewrite README 2011-02-15 12:04:32 +02:00
av_log.c stream_ffmpeg: fix broken line from 30afc64532 2012-04-18 01:27:55 +03:00
av_log.h terminal output: show libav version numbers in verbose mode 2011-10-01 20:03:49 +03:00
av_opts.c Update Libav API uses 2012-02-01 22:46:27 +02:00
av_opts.h Add missing multiple inclusion guards. 2009-01-25 20:10:36 +00:00
bstr.c Merge remote-tracking branch 'origin/master' 2012-07-28 17:24:05 +02:00
bstr.h bstr.h: fix compilation with C++ 2012-08-03 03:34:38 +02:00
cfg-mplayer.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
codec-cfg.c libmpcodecs: add support for 422P9 2012-08-03 01:43:03 +02:00
codec-cfg.h video, audio: use lavc decoders without codecs.conf entries 2012-07-24 09:01:47 +03:00
command.c mplayer: make OSD stack a member of MPContext 2012-08-04 19:59:56 +02:00
command.h Merge svn changes up to r30475 2010-03-09 19:18:43 +02:00
configure configure: fix directx check on Cygwin 2012-08-03 03:34:38 +02:00
Copyright mp3lib: drop internal mp3lib tree 2011-04-02 07:28:53 +03:00
cpudetect.c cpudetect: remove unused/forgotten crap 2012-08-01 23:49:06 +02:00
cpudetect.h cpudetect: remove unused/forgotten crap 2012-08-01 23:49:06 +02:00
defaultopts.c mplayer: expand --title as property, remove --use-filename-title 2012-08-02 02:37:00 +02:00
defaultopts.h cleanup: remove unused MEncoder-related code 2011-01-25 02:29:31 +02:00
fmt-conversion.c libmpcodecs: add support for 422P9 2012-08-03 01:43:03 +02:00
fmt-conversion.h Add license header to all top-level files missing them. 2010-01-30 23:24:23 +00:00
LICENSE Copyright, LICENSE: change binary license to GPL 3 2011-03-24 23:40:29 +02:00
m_config.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_config.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_option.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_option.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_property.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_property.h Add license header to all top-level files missing them. 2010-01-30 23:24:23 +00:00
m_struct.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_struct.h Remove dead code 2012-08-01 17:07:35 +02:00
Makefile AF: remove af_stats 2012-08-03 02:05:23 +02:00
mangle.h mangle: change preprocessor define for macosx 2012-08-01 08:46:20 +02:00
metadata.h Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
mixer.c mixer: silence message about inserting volume filter 2012-07-30 01:46:04 +02:00
mixer.h mixer: support native audio driver mute 2012-04-11 03:56:28 +03:00
mp_core.h mplayer: make OSD stack a member of MPContext 2012-08-04 19:59:56 +02:00
mp_fifo.c input: allow unicode keys and reassign internal key codes 2012-03-25 22:30:37 +03:00
mp_fifo.h input: allow unicode keys and reassign internal key codes 2012-03-25 22:30:37 +03:00
mp_msg.c mp_msg: remove filename_recode 2012-07-31 01:35:53 +02:00
mp_msg.h mp_msg: remove filename_recode 2012-07-31 01:35:53 +02:00
mp_osd.h mplayer: make OSD stack a member of MPContext 2012-08-04 19:59:56 +02:00
mpbswap.h build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00
mpcommon.c Change version string 2012-07-29 00:04:17 +02:00
mpcommon.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
mplayer.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
mplayer.h libvo: remove exit_player_bad() 2012-07-30 15:46:05 +02:00
options.h mplayer: rip out --capture support 2012-08-02 23:22:52 +02:00
parser-cfg.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
parser-cfg.h options: move command line preparse together with parse 2011-07-26 06:02:03 +03:00
parser-mpcmd.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
parser-mpcmd.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
path.c bstr: rename bstr() function to bstr0(), and typedef bstr to struct bstr 2012-07-28 23:47:42 +02:00
path.h windows support: unicode filenames 2012-03-09 20:48:54 +02:00
playlist_parser.c mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
playlist_parser.h mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
playlist.c playlist: rename params_count field to num_params for consistency 2012-08-04 19:59:55 +02:00
playlist.h playlist: rename params_count field to num_params for consistency 2012-08-04 19:59:55 +02:00
pnm_loader.c vo_gl: Move the read_pnm function into a separate file 2010-11-02 04:18:37 +02:00
pnm_loader.h vo_gl: Move the read_pnm function into a separate file 2010-11-02 04:18:37 +02:00
README osd: remove freetype font rendering code 2012-07-28 23:36:08 +02:00
screenshot.c bstr: rename bstr() function to bstr0(), and typedef bstr to struct bstr 2012-07-28 23:47:42 +02:00
screenshot.h screenshot: make screenshot filenames configurable 2012-02-29 04:14:54 +01:00
subopt-helper.c Remove dead code 2012-08-01 17:07:35 +02:00
subopt-helper.h Remove dead code 2012-08-01 17:07:35 +02:00
talloc.c talloc.[ch]: remove "type safety" hack that violates C types 2011-08-19 03:01:16 +03:00
talloc.h windows: fix format string attributes on MinGW 2012-03-01 00:22:29 +02:00
version.sh Change version string 2012-07-29 00:04:17 +02:00

Compiling with full features requires development files for several
external libraries. Below is a list of some important requirements. For
more information see the output of './configure --help' for a list of options,
or look at the list of enabled and disabled features printed after running
'./configure'. If you think you have support for some feature installed
but configure fails to detect it, the file config.log may contain information
about the reasons for the failure.

Libraries specific to particular video output methods
(you'll want at least one of VDPAU, GL or Xv):
 - libvdpau (for VDPAU output, best choice for NVIDIA cards)
 - libGL (OpenGL output)
 - libXv (XVideo output)
general:
 - libasound   (ALSA audio output)
 - various general X development libraries
 - libfreetype (for libass)
 - libfontconfig (for libass)
 - libass
 - FFmpeg libraries (libavutil libavcodec libavformat libswscale libpostproc)

Most of the above libraries are available in suitable versions on normal
Linux distributions. However FFmpeg is an exception (distro versions may be
too old to work at all or work well). For that reason you may want to use
the separately available build wrapper that first compiles FFmpeg libraries
and libass, and then compiles the player statically linked against those.