1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-22 03:08:33 +00:00
Command line video player
Go to file
wm4 75eab4f72a video, options: implement better YUV->RGB conversion control
Rewrite control of the colorspace and input/output level parameters
used in YUV-RGB conversions, replacing VO-specific suboptions with new
common options and adding configuration support to more cases.

Add new option --colormatrix which selects the colorspace the original
video is assumed to have in YUV->RGB conversions. The default
behavior changes from assuming BT.601 to colorspace autoselection
between BT.601 and BT.709 using a simple heuristic based on video
size. Add new options --colormatrix-input-range and
--colormatrix-output-range which select input YUV and output RGB range.
Disable the previously existing VO-specific colorspace and level
conversion suboptions in vo_gl and vo_vdpau. Remove the
"yuv_colorspace" property and replace it with one named "colormatrix"
and semantics matching the new option. Add new properties matching the
options for level conversion.

Colorspace selection is currently supported by vo_gl, vo_vdpau, vo_xv
and vf_scale, and all can change it at runtime (previously only
vo_vdpau and vo_xv could). vo_vdpau now uses the same conversion
matrix generation as vo_gl instead of libvdpau functionality; the main
functional difference is that the "contrast" equalizer control behaves
somewhat differently (it scales the Y component around 1/2 instead of
around 0, so that contrast 0 makes the image gray rather than black).
vo_xv does not support level conversion. vf_scale supports range
setting for input, but always outputs full-range RGB.

The value of the slave properties is the policy setting used for
conversions. This means they can be set to any value regardless of
whether the current VO supports that value or whether there currently
even is any video. Possibly separate properties could be added to
query the conversion actually used at the moment, if any.

Because the colorspace and level settings are now set with a single
VF/VO control call, the return value of that is no longer used to
signal whether all the settings are actually supported. Instead code
should set all the details it can support, and ignore the rest. The
core will use GET_YUV_COLORSPACE to check which colorspace details
have been set and which not. In other words, the return value for
SET_YUV_COLORSPACE only signals whether any kind of YUV colorspace
conversion handling exists at all, and VOs have to take care to return
the actual state with GET_YUV_COLORSPACE instead.

To be changed in later commits: add missing option documentation.
2011-10-16 21:11:11 +03:00
debian Merge svn changes up to r30675 2010-03-10 00:47:25 +02:00
DOCS video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
drivers the great MPlayer tab removal: part I 2010-04-12 10:56:17 +00:00
etc codecs.conf: add Libav ProRes decoder 2011-09-23 06:27:05 +03:00
ffmpeg_files ffmpeg_files/intreadwrite.h: fix AV_RL32/AV_RB32 signedness 2011-06-15 00:10:47 +03:00
input video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
libaf cleanup: do libav* initialization on startup 2011-07-18 00:57:05 +03:00
libao2 ao_pcm: fix pointless message due to uninitialize variable 2011-08-11 20:58:05 +03:00
libmenu options: change option parsing to use bstr 2011-07-29 05:50:38 +03:00
libmpcodecs video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
libmpdemux demux_mkv: avoid hang with some broken files 2011-09-25 18:35:09 +03:00
libvo video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
loader loader/module.c: Fix compilation with --disable-qtx 2011-07-06 13:01:08 +03:00
osdep getch2.c: fix negative keycodes returned for non-ascii 2011-10-03 04:12:15 +03:00
rpm vo_xvmc: drop XvMC support 2011-05-09 20:27:16 +03:00
stream stream_cdda: fix incorrectly allocated option field 2011-07-30 04:03:47 +03:00
sub subreader.c: don't run FriBiDi code if using libass 2011-09-23 14:43:53 +03:00
timeline demuxer.h: avoid including stream.h 2011-08-19 21:37:16 +03:00
TOOLS TOOLS/matroska.py: recognize CodecName 2011-04-08 01:20:35 +03:00
.gitignore .gitignore: add /cpuinfo 2011-03-13 22:20:51 +02:00
access_mpcontext.h cleanup: remove warnings under libmenu/ 2011-06-24 22:55:09 +03:00
asxparser.c asxparser: remove code confusing asx/player options 2011-07-26 05:31:30 +03:00
asxparser.h Merge svn change r31134 2010-05-07 22:03:48 +03:00
AUTHORS documentation: remove Changelog, rewrite README 2011-02-15 12:04:32 +02:00
av_log.c terminal output: show libav version numbers in verbose mode 2011-10-01 20:03:49 +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 2011-04-20 04:36:05 +03:00
av_opts.h Add missing multiple inclusion guards. 2009-01-25 20:10:36 +00:00
bstr.c options: fix failure to parse trailing ',' in string list 2011-07-31 20:25:22 +03:00
bstr.h options: change option parsing to use bstr 2011-07-29 05:50:38 +03:00
cfg-mplayer.h video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
codec-cfg.c build: Revert "codec-cfg.c: avoid including aviheader.h" 2011-07-07 07:38:24 +03:00
codec-cfg.h codec-cfg: set CODEC_CFG_MIN to the release value in codecs.conf 2010-11-02 04:11:07 +02:00
command.c video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
command.h Merge svn changes up to r30475 2010-03-09 19:18:43 +02:00
configure configure: libav: use "pkg-config --print-errors", "Libav" name 2011-08-21 00:36:23 +03:00
Copyright mp3lib: drop internal mp3lib tree 2011-04-02 07:28:53 +03:00
cpudetect.c cpudetect.c: check OS SSE support only with runtime detection 2011-07-06 13:01:07 +03:00
cpudetect.h loader: Reuse do_cpuid from cpudetect.c in loader/win32.c 2010-11-02 04:15:01 +02:00
cpuinfo.c the great MPlayer tab removal: part II 2010-05-03 23:34:38 +00:00
defaultopts.c options: move libass-related options to struct 2011-09-03 14:26:14 +03:00
defaultopts.h cleanup: remove unused MEncoder-related code 2011-01-25 02:29:31 +02:00
edl.c Delete things related to old translation system 2010-03-10 03:47:14 +02:00
edl.h the great MPlayer tab removal: part II 2010-05-03 23:34:38 +00:00
fmt-conversion.c video/colorspaces: add new 9/10-bit formats from libavcodec 2011-06-26 06:27:50 +03: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: add "disabled option" functionality 2011-09-04 14:36:09 +03:00
m_config.h options: add "disabled option" functionality 2011-09-04 14:36:09 +03:00
m_option.c options: make "choice" option type parsing ignore case 2011-09-11 16:35:44 +03:00
m_option.h options: add "disabled option" functionality 2011-09-04 14:36:09 +03:00
m_property.c commands: osd_show_property_text: fix \xNN escapes 2011-08-05 03:46:06 +03: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: change option parsing to use bstr 2011-07-29 05:50:38 +03:00
m_struct.h options: change option parsing to use bstr 2011-07-29 05:50:38 +03:00
Makefile vf_qp: enable compilation depending on libavutil eval API 2011-07-18 00:57:05 +03:00
mangle.h Use configure code to define PIC instead of duplicating the check in mangle.h. 2009-11-10 13:08:36 +00:00
metadata.h Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
mixer.c audio: change external AO interface to "ao_[method](ao, ...)" 2011-04-09 03:03:22 +03:00
mixer.h audio: change external AO interface to "ao_[method](ao, ...)" 2011-04-09 03:03:22 +03:00
mp_core.h core: audio: improve audio-only seeks and position reporting 2011-07-31 01:06:12 +03:00
mp_fifo.c input: rework event reading and command queuing 2011-07-17 07:36:09 +03:00
mp_fifo.h input: rework event reading and command queuing 2011-07-17 07:36:09 +03:00
mp_msg.c cleanup: shut up more warnings 2011-05-06 18:33:16 +03:00
mp_msg.h mp_msg: change mp_dbg() to inline function to check syntax 2011-06-29 09:51:49 +03:00
mp_osd.h options: more mplayer.c options moved to option struct 2010-11-14 00:14:56 +02:00
mpbswap.h Merge svn changes up to r30475 2010-03-09 19:18:43 +02:00
mpcommon.c cleanup: remove unused MEncoder-related code 2011-01-25 02:29:31 +02:00
mpcommon.h subs: move vobsub loading logic down to find_subfiles.c 2011-04-20 04:22:52 +03:00
mplayer.c terminal output: show libav version numbers in verbose mode 2011-10-01 20:03:49 +03:00
mplayer.h options: move sub_name, sub_auto and vobsub_name to struct 2011-04-20 04:22:52 +03:00
options.h video, options: implement better YUV->RGB conversion control 2011-10-16 21:11:11 +03:00
parser-cfg.c build: fix --enable-debug, remove some "#ifdef MP_DEBUG" 2011-07-30 19:03:20 +03:00
parser-cfg.h options: move command line preparse together with parse 2011-07-26 06:02:03 +03:00
parser-mpcmd.c options: commandline: support "--no-opt" for flag options 2011-09-01 18:32:11 +03:00
parser-mpcmd.h options: move command line preparse together with parse 2011-07-26 06:02:03 +03:00
path.c bstr: rename BSTR() -> bstr() 2011-07-27 08:38:12 +03:00
path.h bstr.[ch], path.[ch]: add string and path handling functions 2011-02-26 16:40:31 +02:00
playtree.c build: fix --enable-debug, remove some "#ifdef MP_DEBUG" 2011-07-30 19:03:20 +03:00
playtree.h options: commandline: accept --foo=xyz style options 2011-07-29 07:24:09 +03:00
playtreeparser.c build: fix --enable-debug, remove some "#ifdef MP_DEBUG" 2011-07-30 19:03:20 +03:00
playtreeparser.h options: commandline: accept --foo=xyz style options 2011-07-29 07:24:09 +03: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 documentation: remove Changelog, rewrite README 2011-02-15 12:04:32 +02:00
subopt-helper.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
subopt-helper.h Add license header to all top-level files missing them. 2010-01-30 23:24:23 +00:00
talloc.c talloc.[ch]: remove "type safety" hack that violates C types 2011-08-19 03:01:16 +03:00
talloc.h talloc.[ch]: remove "type safety" hack that violates C types 2011-08-19 03:01:16 +03:00
version.sh build: change version number generation 2011-02-19 19:07:12 +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
 - libfontconfig
 - 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.