summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@nand.wakku.to>2015-03-31 07:47:13 +0200
committerNiklas Haas <git@nand.wakku.to>2015-04-04 15:48:38 +0200
commit717e7a5baa1634d853a14dcfeebf42f8d1071384 (patch)
treecf87ffdaac1084953f5b95793b6c0017dcec83eb
parent51bb5e819469574f210dbdf916741511282956ce (diff)
downloadmpv-717e7a5baa1634d853a14dcfeebf42f8d1071384.tar.bz2
mpv-717e7a5baa1634d853a14dcfeebf42f8d1071384.tar.xz
vf_format: add gamma override option
-rw-r--r--DOCS/man/vf.rst22
-rw-r--r--video/filter/vf_format.c4
2 files changed, 26 insertions, 0 deletions
diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst
index 2af1e8fda0..be7daee09e 100644
--- a/DOCS/man/vf.rst
+++ b/DOCS/man/vf.rst
@@ -305,6 +305,28 @@ Available filters are:
:prophoto: ProPhoto RGB (ROMM)
:cie1931: CIE 1931 RGB
+ ``<gamma>``
+ Gamma function the source file was encoded with. Normally this should be set
+ in the file header, but when playing broken or mistagged files this can be
+ used to override the setting.
+
+ This option only affects video output drivers that perform color management.
+
+ If this option is set to ``auto`` (which is the default), the gamma will
+ be set to BT.1886 for YCbCr content, sRGB for RGB content and Linear for
+ XYZ content.
+
+ Available gamma functions are:
+
+ :auto: automatic selection (default)
+ :bt.1886: ITU-R BT.1886 (approximation of BT.601/BT.709/BT.2020 curve)
+ :srgb: IEC 61966-2-4 (sRGB)
+ :linear: Linear light
+ :gamma1.8: Pure power curve (gamma 1.8)
+ :gamma2.2: Pure power curve (gamma 2.2)
+ :gamma2.8: Pure power curve (gamma 2.8)
+ :prophoto: ProPhoto RGB (ROMM) curve
+
``<stereo-in>``
Set the stereo mode the video is assumed to be encoded in. Takes the
same values as the ``--video-stereo-mode`` option.
diff --git a/video/filter/vf_format.c b/video/filter/vf_format.c
index 4abf18b8fe..184d1f8eea 100644
--- a/video/filter/vf_format.c
+++ b/video/filter/vf_format.c
@@ -37,6 +37,7 @@ struct vf_priv_s {
int colorlevels;
int outputlevels;
int primaries;
+ int gamma;
int chroma_location;
int stereo_in;
int stereo_out;
@@ -93,6 +94,8 @@ static int reconfig(struct vf_instance *vf, struct mp_image_params *in,
out->outputlevels = p->outputlevels;
if (p->primaries)
out->primaries = p->primaries;
+ if (p->gamma)
+ out->gamma = p->gamma;
if (p->chroma_location)
out->chroma_location = p->chroma_location;
if (p->stereo_in)
@@ -137,6 +140,7 @@ static const m_option_t vf_opts_fields[] = {
OPT_CHOICE_C("colorlevels", colorlevels, 0, mp_csp_levels_names),
OPT_CHOICE_C("outputlevels", outputlevels, 0, mp_csp_levels_names),
OPT_CHOICE_C("primaries", primaries, 0, mp_csp_prim_names),
+ OPT_CHOICE_C("gamma", gamma, 0, mp_csp_trc_names),
OPT_CHOICE_C("chroma-location", chroma_location, 0, mp_chroma_names),
OPT_CHOICE_C("stereo-in", stereo_in, 0, mp_stereo3d_names),
OPT_CHOICE_C("stereo-out", stereo_out, 0, mp_stereo3d_names),