From 717e7a5baa1634d853a14dcfeebf42f8d1071384 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Tue, 31 Mar 2015 07:47:13 +0200 Subject: vf_format: add gamma override option --- DOCS/man/vf.rst | 22 ++++++++++++++++++++++ video/filter/vf_format.c | 4 ++++ 2 files changed, 26 insertions(+) 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 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 + ```` 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), -- cgit v1.2.3