mpv-player / mpv-player/mpv

Need Help Using RTINGS ICC Profile with MPV

Open
#17,407 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

os:win
Dominant language
C
Stars
37k
Forks
3.5k
Avg merge
1d 10h
Merged PRs (30d)
22

Description

mpv Information
D:\mpv-x86_64-v3-20260211-git-3847a81>mpv -v
[cplayer] Command line options: '-v'
[cplayer] mpv v0.41.0-173-g3847a8157 Copyright © 2000-2026 mpv/MPlayer/mplayer2 projects
[cplayer]  built on Feb 10 2026 12:11:58
[cplayer] libplacebo version: v7.360.0 (v7.351.0-153-gb2ea27d-dirty)
[cplayer] FFmpeg version: N-122712-g7e3781e3c
[cplayer] FFmpeg library versions:
[cplayer]    libavcodec      62.23.103
[cplayer]    libavdevice     62.2.100
[cplayer]    libavfilter     11.12.100
[cplayer]    libavformat     62.9.100
[cplayer]    libavutil       60.24.100
[cplayer]    libswresample   6.2.100
[cplayer]    libswscale      9.3.100
[cplayer] Configuration: -Ddebug=true -Db_ndebug=true -Doptimization=3 -Db_lto=true -Db_lto_mode=thin -Dlibmpv=true -Dpdf-build=enabled -Dlua=enabled -Djavascript=enabled -Dsdl2-gamepad=enabled -Dlibarchive=enabled -Dlibbluray=enabled -Ddvdnav=enabled -Duchardet=enabled -Drubberband=enabled -Dlcms2=enabled -Dopenal=enabled -Dspirv-cross=enabled -Dvulkan=enabled -Dvapoursynth=enabled -Dsubrandr=enabled -Dgl=enabled -Degl-angle=enabled -Dc_args=-Wno-error=int-conversion -Dprefix=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64-v3/install/x86_64-w64-mingw32 -Dlibdir=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64-v3/install/x86_64-w64-mingw32/lib -Ddefault_library=shared -Dprefer_static=True --cross-file=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64-v3/meson_cross.txt
[cplayer] List of enabled features: amf build-date cplugins cuda-hwaccel cuda-interop d3d-hwaccel d3d11 d3d9-hwaccel debug direct3d dos-paths dvdnav dxgi-debug-d3d11 egl-angle egl-angle-win32 ffmpeg ffnvcodec gl gl-dxinterop gl-dxinterop-d3d9 gl-win32 glob glob-win32 gpl iconv javascript jpeg lcms2 libarchive libass libavdevice libbluray libplacebo luajit openal rubberband rubberband-3 sdl2-gamepad shaderc spirv-cross subrandr uchardet vaapi vaapi-win32 vapoursynth vector vulkan wasapi win32 win32-desktop win32-executable win32-smtc win32-threads zimg zimg-st428 zlib
[cplayer] Built with NDEBUG.
[cplayer] Reading config file D:/mpv-x86_64-v3-20260211-git-3847a81/portable_config/mpv.conf
[ifo_dvdnav] Opening D:/mpv-x86_64-v3-20260211-git-3847a81/portable_config/mpv.conf
[bdmv/bluray] Opening D:/mpv-x86_64-v3-20260211-git-3847a81/portable_config/mpv.conf
[file] Opening D:/mpv-x86_64-v3-20260211-git-3847a81/portable_config/mpv.conf
[cplayer] Applying profile 'default'...
[cplayer] Setting option 'vo' = 'gpu-next' (flags = 4)
[cplayer] Setting option 'gpu-api' = 'd3d11' (flags = 4)
[cplayer] Setting option 'hwdec' = 'auto-copy' (flags = 4)
[cplayer] Setting option 'target-prim' = 'bt.2020' (flags = 4)
[cplayer] Setting option 'target-trc' = 'srgb' (flags = 4)
[cplayer] Setting option 'target-colorspace-hint' = 'no' (flags = 4)
[cplayer] Setting option 'icc-profile-auto' = 'no' (flags = 4)
[cplayer] Setting option 'icc-profile' = '' (flags = 4)
[cplayer] Setting option 'gamut-mapping-mode' = 'relative' (flags = 4)
[cplayer] Setting option 'tone-mapping' = 'clip' (flags = 4)
[cplayer] Setting option 'v' = '' (flags = 8)
[clipboard] Initialized win32 clipboard backend.
[cplayer] mpv v0.41.0-173-g3847a8157 Copyright © 2000-2026 mpv/MPlayer/mplayer2 projects
[cplayer]  built on Feb 10 2026 12:11:58
[cplayer] libplacebo version: v7.360.0 (v7.351.0-153-gb2ea27d-dirty)
[cplayer] FFmpeg version: N-122712-g7e3781e3c
[cplayer] FFmpeg library versions:
[cplayer]    libavcodec      62.23.103
[cplayer]    libavdevice     62.2.100
[cplayer]    libavfilter     11.12.100
[cplayer]    libavformat     62.9.100
[cplayer]    libavutil       60.24.100
[cplayer]    libswresample   6.2.100
[cplayer]    libswscale      9.3.100
[cplayer] Usage:   mpv [options] [url|path/]filename
[cplayer]
[cplayer] Basic options:
[cplayer]  --start=<time>    seek to given (percent, seconds, or hh:mm:ss) position
[cplayer]  --no-audio        do not play sound
[cplayer]  --no-video        do not play video
[cplayer]  --fs              fullscreen playback
[cplayer]  --sub-file=<file> specify subtitle file to use
[cplayer]  --playlist=<file> specify playlist file
[cplayer]
[cplayer]  --list-options    list all mpv options
[cplayer]  --h=<string>      print options which contain the given string in their name
[cplayer] Set property: user-data/osc/visibility="auto" -> 1
[cplayer] Set property: user-data/osc/margins={"b":0,"r":0,"t":0,"l":0} -> 1
Other Information
- Windows version: 11 pro
- GPU model, driver and version: RTX 5060 Ti 16GB latest driver
- Source of mpv: zhongfly
Reproduction Steps

Hey everyone, I’m trying to get MPV on Windows 11 (HDR disabled) to accurately display SDR content using the RTINGS ICC profile for the GIGABYTE M27Q-P. I’ve gone through many experiments and here’s the situation:
Using vo=gpu-next + icc-profile-auto=yes and targeting Rec.709 or sRGB often results in oversaturated colors.
Tricks like faking target-prim=bt.2020 and disabling ICC make the colors look like Photos, but this is a visual hack — not accurate color management.
I want to use the RTINGS ICM properly, ideally via either:
libplacebo generating the 3D LUT automatically from the ICC, or
generating a .cube file in DisplayCAL from the ICC (Rec.709 → monitor) and loading it in MPV with icc-profile-auto=no.
My questions:
1- Why it looks oversaturate using just the settings below :

Image
vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy
Couldn't get the screenshot to look the same as display (too saturated video output like neon while screenshot is less saturated).

2- Using icm profile reults in less saturation but still oversaturated :

vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy
icc-profile-auto=yes

3- Using the settings below gives less saturation which is more accurate but still more saturated than how it should looks in my opinion :

This time screenshot is same as previous screenshots but matches video output

Image

vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy

# --- THE "DE-SATURATOR" FIX ---
# We lie to MPV and say the monitor is BT.2020. 
# This causes sRGB/P3 colors to be "pulled in" and look natural/flat.
target-prim=bt.2020
target-trc=srgb

# --- REMOVE INTERFERENCE ---
# Stops Windows from "suggesting" HDR colors to MPV
target-colorspace-hint=no
icc-profile-auto=no
icc-profile=""

# --- NATURAL MAPPING ---
# 'relative' ensures white stays white.
# 'clip' prevents the "HDR glow" in highlights.
gamut-mapping-mode=relative
tone-mapping=clip

4- Tried DisplayCAL-3DLUT-maker for converting the rtings icm profile to .cube settings below :

#Same code as above but with cube file
vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy

target-prim=bt.2020
target-trc=srgb

target-colorspace-hint=no
icc-profile-auto=no
icc-profile=""
lut="D:\Perceptual cube\rtings-perceptual.cube"
lut-type=native

gamut-mapping-mode=relative
tone-mapping=clip
Image
This time screenshot is more saturated than video output (washed out less sautrated video than previous results) but the colors are slightly different in previous screenshots this screenshot is more accurate in my opinion

Are my DisplayCAL-3DLUT-maker settings correct?
If I remove the clip back to oversaturation (couldn't make a screenshot that matches display ouput) even with the cube file, what am I missing?

Expected Behavior

I am expecting the video output to be like the following result when using .cube :

Image

Also is there a way to improve shadow details (the black shirt on the right looks crushed)?

Actual Behavior

Couldn't take a screenshot that matches video output but using the following conf results in a washed out video while screenshot of that video is accuarate in my opinion :

vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy

# --- THE "DE-SATURATOR" FIX ---
# We lie to MPV and say the monitor is BT.2020. 
# This causes sRGB/P3 colors to be "pulled in" and look natural/flat.
target-prim=bt.2020
target-trc=srgb

# --- REMOVE INTERFERENCE ---
# Stops Windows from "suggesting" HDR colors to MPV
target-colorspace-hint=no
icc-profile-auto=no
icc-profile=""
lut="D:\Perceptual cube\rtings-perceptual.cube"
lut-type=native

# --- NATURAL MAPPING ---
# 'relative' ensures white stays white.
# 'clip' prevents the "HDR glow" in highlights.
gamut-mapping-mode=relative
tone-mapping=clip

If need to change these settings for more accuracy please let me know :

Image
Log File

output.txt

The log generated using this conf :

vo=gpu-next
gpu-api=d3d11
hwdec=auto-copy

# --- THE "DE-SATURATOR" FIX ---
# We lie to MPV and say the monitor is BT.2020. 
# This causes sRGB/P3 colors to be "pulled in" and look natural/flat.
target-prim=bt.2020
target-trc=srgb

# --- REMOVE INTERFERENCE ---
# Stops Windows from "suggesting" HDR colors to MPV
target-colorspace-hint=no
icc-profile-auto=no
icc-profile=""
lut="D:\Perceptual cube\rtings-perceptual.cube"
lut-type=native

# --- NATURAL MAPPING ---
# 'relative' ensures white stays white.
# 'clip' prevents the "HDR glow" in highlights.
gamut-mapping-mode=relative
tone-mapping=clip
Sample Files

No response

I carefully read all instruction and confirm that I did the following:
  • I tested with the latest mpv version to validate that the issue is not already fixed.
  • I provided all required information including system and mpv version.
  • I produced the log file with the exact same set of files, parameters, and conditions used in "Reproduction Steps", with the addition of --log-file=output.txt.
  • I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
  • I attached the full, untruncated log file.
  • I attached the backtrace in the case of a crash.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file or failing test is identified. Start by reviewing portable_config/mpv.conf alongside output.txt and reproduce the reported differences using the listed ICC and LUT settings; done would require a confirmed, reproducible defect and a specific mpv code or documentation change.

Written by the indexing model from the issue text.

Assessment

Domain
cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.