mpv icon indicating copy to clipboard operation
mpv copied to clipboard

supposedly incorrect color repoduction

Open mightyhuhn opened this issue 6 months ago • 20 comments

mpv Information

mpv v0.40.0_1-116-ge8f115e1e Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
 built on Jun  3 2025 16:53:01
libplacebo version: v7.351.0 (v7.351.0-4-gc311355-dirty)
FFmpeg version: git-2025-06-03-917d4264d
FFmpeg library versions:
   libavcodec      62.3.101
   libavdevice     62.0.100
   libavfilter     11.0.100
   libavformat     62.0.102
   libavutil       60.3.100
   libswresample   6.0.100
   libswscale      9.0.100

Other Information

- Windows version: Version	10.0.26100 Build 26100
- GPU model, driver and version: 4060 576.52
- Source of mpv: https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest according to the update.ps1
- Latest known working version: none
- Issue started after the following happened: i compared an iamge and noticed a massive color difference with profile=high-quality vo=gpu-next and nothing else.

after that i tried the very old know calibration patterns from https://www.avsforum.com/threads/avs-hd-709-blu-ray-mp4-calibration.948496/

Reproduction Steps

Image

mpc-hc is madVR mpc-be is mpcVR mpv decodes this files as 255 15 3. a bit difference is fine dithering such but that not even close to 100% red mpcVR pixel i checked is 255 1 0 madVR is 255 0 0

tested file https://github.com/user-attachments/assets/fb0e9e0d-3b5c-40e8-8709-bd7b17214675

i could not test no config because it is again blank

Image

Expected Behavior

if the file is correct red 255 so ~241 CB mpv should also produce red like any other renderer/video player else the rest is wrong and the file is 255 15 1 and i have a lot more bug reports to write...

Actual Behavior

mpv outputs 255 15 1 instead of 255 0 0

Log File

[ 0.001][v][cplayer] mpv v0.40.0-130-g6b178e4f5 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects [ 0.002][v][cplayer] built on Jun 2 2025 14:05:04 [ 0.002][v][cplayer] libplacebo version: v7.351.0 (v7.351.0-4-gc311355-dirty) [ 0.002][v][cplayer] FFmpeg version: N-119811-gd4556c98f [ 0.002][v][cplayer] FFmpeg library versions: [ 0.002][v][cplayer] libavcodec 62.3.101 [ 0.002][v][cplayer] libavdevice 62.0.100 [ 0.002][v][cplayer] libavfilter 11.0.100 [ 0.002][v][cplayer] libavformat 62.0.102 [ 0.002][v][cplayer] libavutil 60.3.100 [ 0.002][v][cplayer] libswresample 6.0.100 [ 0.002][v][cplayer] libswscale 9.0.100 [ 0.002][v][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=enabled -Dlibarchive=enabled -Dlibbluray=enabled -Ddvdnav=enabled -Duchardet=enabled -Drubberband=enabled -Dlcms2=enabled -Dopenal=enabled -Dspirv-cross=enabled -Dvulkan=enabled -Dvapoursynth=enabled -Dgl=enabled -Degl-angle=enabled -Dc_args=-Wno-error=int-conversion -Dprefix=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/install/x86_64-w64-mingw32 -Dlibdir=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/install/x86_64-w64-mingw32/lib -Ddefault_library=shared -Dprefer_static=True --cross-file=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/meson_cross.txt [ 0.002][v][cplayer] List of enabled features: 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 sdl2-audio sdl2-gamepad sdl2-video shaderc spirv-cross uchardet vaapi vaapi-win32 vapoursynth vector vulkan wasapi win32 win32-desktop win32-executable win32-smtc win32-threads zimg zimg-st428 zlib [ 0.002][v][cplayer] Built with NDEBUG. [ 0.002][v][cplayer] Command line options: '--player-operation-mode=pseudo-gui' '--no-config' '--gpu-debug' '--log-file=output.txt' 'D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4' [ 0.002][v][cplayer] mpv v0.40.0-130-g6b178e4f5 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects [ 0.002][v][cplayer] built on Jun 2 2025 14:05:04 [ 0.002][v][cplayer] libplacebo version: v7.351.0 (v7.351.0-4-gc311355-dirty) [ 0.002][v][cplayer] FFmpeg version: N-119811-gd4556c98f [ 0.002][v][cplayer] FFmpeg library versions: [ 0.002][v][cplayer] libavcodec 62.3.101 [ 0.002][v][cplayer] libavdevice 62.0.100 [ 0.002][v][cplayer] libavfilter 11.0.100 [ 0.002][v][cplayer] libavformat 62.0.102 [ 0.002][v][cplayer] libavutil 60.3.100 [ 0.002][v][cplayer] libswresample 6.0.100 [ 0.002][v][cplayer] libswscale 9.0.100 [ 0.002][v][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=enabled -Dlibarchive=enabled -Dlibbluray=enabled -Ddvdnav=enabled -Duchardet=enabled -Drubberband=enabled -Dlcms2=enabled -Dopenal=enabled -Dspirv-cross=enabled -Dvulkan=enabled -Dvapoursynth=enabled -Dgl=enabled -Degl-angle=enabled -Dc_args=-Wno-error=int-conversion -Dprefix=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/install/x86_64-w64-mingw32 -Dlibdir=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/install/x86_64-w64-mingw32/lib -Ddefault_library=shared -Dprefer_static=True --cross-file=/__w/mpv-winbuild/mpv-winbuild/mpv-winbuild-cmake/build64/meson_cross.txt [ 0.002][v][cplayer] List of enabled features: 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 sdl2-audio sdl2-gamepad sdl2-video shaderc spirv-cross uchardet vaapi vaapi-win32 vapoursynth vector vulkan wasapi win32 win32-desktop win32-executable win32-smtc win32-threads zimg zimg-st428 zlib [ 0.002][v][cplayer] Built with NDEBUG. [ 0.002][d][global] home path: '' -> '-' [ 0.002][d][global] user path: '~~home/' -> '' [ 0.002][d][global] user path: '~~old_home/' -> '' [ 0.002][v][cplayer] Setting option 'player-operation-mode' = 'pseudo-gui' (flags = 8) [ 0.002][v][cplayer] Setting option 'config' = 'no' (flags = 8) [ 0.002][v][cplayer] Setting option 'gpu-debug' = '' (flags = 8) [ 0.002][v][cplayer] Setting option 'log-file' = 'output.txt' (flags = 8) [ 0.002][v][cplayer] Applying profile 'builtin-pseudo-gui'... [ 0.002][v][cplayer] Setting option 'terminal' = 'no' (flags = 260) [ 0.002][v][cplayer] Setting option 'force-window' = 'yes' (flags = 260) [ 0.002][v][cplayer] Setting option 'idle' = 'once' (flags = 260) [ 0.002][v][cplayer] Setting option 'screenshot-dir' = '~~desktop/' (flags = 260) [ 0.002][v][cplayer] Applying profile 'pseudo-gui'... [ 0.002][v][cplayer] Setting option 'player-operation-mode' = 'pseudo-gui' (flags = 4) [ 0.002][d][osc] Loading lua script @osc.lua... [ 0.003][d][ytdl_hook] Loading lua script @ytdl_hook.lua... [ 0.003][d][stats] Loading lua script @stats.lua... [ 0.003][d][console] Loading lua script @console.lua... [ 0.003][d][auto_profiles] Loading lua script @auto_profiles.lua... [ 0.003][d][select] Loading lua script @select.lua... [ 0.003][d][positioning] Loading lua script @positioning.lua... [ 0.003][d][commands] Loading lua script @commands.lua... [ 0.003][v][clipboard] Initialized win32 clipboard backend. [ 0.003][v][cplayer] Waiting for scripts... [ 0.003][d][osc] loading mp.defaults [ 0.003][d][ytdl_hook] loading mp.defaults [ 0.003][d][stats] loading mp.defaults [ 0.003][d][auto_profiles] loading mp.defaults [ 0.003][d][console] loading mp.defaults [ 0.003][d][positioning] loading mp.defaults [ 0.003][d][select] loading mp.defaults [ 0.003][d][osc] loading @osc.lua [ 0.003][d][stats] loading @stats.lua [ 0.003][d][auto_profiles] loading @auto_profiles.lua [ 0.003][d][ytdl_hook] loading @ytdl_hook.lua [ 0.003][d][positioning] loading @positioning.lua [ 0.003][d][select] loading @select.lua [ 0.003][d][console] loading @console.lua [ 0.004][d][commands] loading mp.defaults [ 0.004][d][positioning] reading options for positioning [ 0.004][d][positioning] script-opts/positioning.conf not found. [ 0.004][d][positioning] lua-settings/positioning.conf not found. [ 0.004][d][select] reading options for select [ 0.004][d][select] script-opts/select.conf not found. [ 0.004][d][select] lua-settings/select.conf not found. [ 0.004][d][cplayer] Run command: define-section, flags=64, args=[name="input_positioning", contents="", flags="default"] [ 0.004][d][cplayer] Run command: enable-section, flags=64, args=[name="input_positioning", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.004][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_positioning", contents="", flags="force"] [ 0.004][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_positioning", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.004][d][cplayer] Run command: define-section, flags=64, args=[name="input_select", contents="", flags="default"] [ 0.004][d][cplayer] Run command: enable-section, flags=64, args=[name="input_select", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.004][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_select", contents="", flags="force"] [ 0.004][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_select", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.004][d][ytdl_hook] reading options for ytdl_hook [ 0.004][d][ytdl_hook] script-opts/ytdl_hook.conf not found. [ 0.004][d][ytdl_hook] lua-settings/ytdl_hook.conf not found. [ 0.005][d][auto_profiles] Destroying client handle... [ 0.005][d][stats] reading options for stats [ 0.005][d][stats] script-opts/stats.conf not found. [ 0.005][d][stats] lua-settings/stats.conf not found. [ 0.005][d][console] reading options for console [ 0.005][d][console] script-opts/console.conf not found. [ 0.005][d][console] lua-settings/console.conf not found. [ 0.005][d][commands] loading @commands.lua [ 0.005][d][cplayer] Run command: define-section, flags=64, args=[name="input_stats", contents="", flags="default"] [ 0.005][d][cplayer] Run command: enable-section, flags=64, args=[name="input_stats", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.005][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_stats", contents="", flags="force"] [ 0.005][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_stats", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.005][d][cplayer] Run command: define-section, flags=64, args=[name="input_console", contents="", flags="default"] [ 0.005][d][cplayer] Run command: enable-section, flags=64, args=[name="input_console", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.005][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_console", contents="", flags="force"] [ 0.005][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_console", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="showhide", contents="mouse_move script-binding osc/__keybinding1\nmouse_leave script-binding osc/__keybinding2\n", flags="force"] [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="showhide_wc", contents="mouse_move script-binding osc/__keybinding3\nmouse_leave script-binding osc/__keybinding4\n", flags="force"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide_wc", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="input", contents="mbtn_left script-binding osc/__keybinding5\nmbtn_mid script-binding osc/__keybinding6\nmbtn_right script-binding osc/__keybinding7\nshift+mbtn_left script-binding osc/__keybinding8\nwheel_up script-binding osc/__keybinding9\nwheel_down script-binding osc/__keybinding10\nmbtn_left_dbl ignore\nshift+mbtn_left_dbl ignore\nmbtn_right_dbl ignore\n", flags="force"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="input", flags=""] [ 0.006][d][commands] reading options for commands [ 0.006][d][commands] script-opts/commands.conf not found. [ 0.006][d][commands] lua-settings/commands.conf not found. [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="window-controls", contents="mbtn_left script-binding osc/__keybinding11\n", flags="force"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="window-controls", flags=""] [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="input_commands", contents="", flags="default"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="input_commands", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.006][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_commands", contents="", flags="force"] [ 0.006][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_commands", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.006][d][osc] reading options for osc [ 0.006][d][osc] script-opts/osc.conf not found. [ 0.006][d][osc] lua-settings/osc.conf not found. [ 0.007][v][cplayer] Set property: user-data/osc/visibility="auto" -> 1 [ 0.007][d][cplayer] Run command: disable-section, flags=64, args=[name="input"] [ 0.007][d][cplayer] Run command: disable-section, flags=64, args=[name="window-controls"] [ 0.007][v][cplayer] Set property: user-data/osc/margins={"b":0,"r":0,"t":0,"l":0} -> 1 [ 0.007][v][cplayer] Done loading scripts. [ 0.007][d][global] state path: 'watch_later' -> '-' [ 0.007][v][cplayer] Running hook: auto_profiles/on_before_start_file [ 0.007][v][cplayer] Failed sending hook command auto_profiles/on_before_start_file. Removing hook. [ 0.007][d][global] state path: 'watch_later' -> '-' [ 0.007][v][cplayer] Running hook: auto_profiles/on_load [ 0.007][v][cplayer] Failed sending hook command auto_profiles/on_load. Removing hook. [ 0.007][v][cplayer] Running hook: ytdl_hook/on_load [ 0.007][v][cplayer] Running hook: ytdl_hook/on_load [ 0.007][v][ytdl_hook] playlist hook [ 0.007][v][ifo_dvdnav] Opening D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4 [ 0.007][v][bdmv/bluray] Opening D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4 [ 0.007][v][file] Opening D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4 [ 0.007][e][file] Cannot open file 'D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4': No such file or directory [ 0.007][e][stream] Failed to open D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4. [ 0.007][v][cplayer] Opening failed or was aborted: D:\mpv-x86_64-v3-20230716-git-cab5448\1-100 Red.mp4 [ 0.007][v][cplayer] Set property: user-data/osc/margins={"b":0,"r":0,"t":0,"l":0} -> 1 [ 0.007][v][cplayer] Running hook: ytdl_hook/on_load_fail [ 0.007][d][osc] osc_init [ 0.007][v][cplayer] finished playback, loading failed (reason 4) [ 0.007][v][cplayer] Running hook: ytdl_hook/on_after_end_file [ 0.007][d][cplayer] Run command: del, flags=64, args=[name="user-data/mpv/ytdl/json-subprocess-result"] [ 0.007][i][cplayer] Exiting... (Errors when loading file) [ 0.007][d][cplayer] Run command: del, flags=64, args=[name="user-data/mpv/console"] [ 0.008][v][cplayer] Set property: user-data/osc/margins={"b":0,"r":0,"t":0,"l":0} -> 1 [ 0.008][d][osd/libass] ASS library version: 0x1703020 (runtime 0x1703020) [ 0.008][v][osd/libass] libass API version: 0x1703020 [ 0.008][v][osd/libass] libass source: meson, commit: 0.17.3-84-g4679413b3636220d940465f0aaedc994ff9bad17 [ 0.008][d][ytdl_hook] Destroying client handle... [ 0.008][v][osd/libass] Shaper: FriBidi 1.0.16 (SIMPLE) HarfBuzz-ng 11.2.1 (COMPLEX) [ 0.008][v][osd/libass] Setting up fonts... [ 0.008][d][positioning] Destroying client handle... [ 0.008][d][commands] Destroying client handle... [ 0.008][d][stats] Destroying client handle... [ 0.008][d][select] Destroying client handle... [ 0.008][d][console] Destroying client handle... [ 0.009][v][osd/libass] Using font provider directwrite (with GDI) [ 0.009][v][osd/libass] Done. [ 0.009][d][cplayer] Run command: del, flags=64, args=[name="user-data/osc"] [ 0.009][d][osc] Destroying client handle... [ 0.013][d][SystemMediaTransportControls] Destroying client handle...

Sample Files

No response

I carefully read all instruction and confirm that I did the following:

  • [x] I tested with the latest mpv version to validate that the issue is not already fixed.
  • [x] I provided all required information including system and mpv version.
  • [x] 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.
  • [x] I produced the log file while the behaviors described in "Actual Behavior" were actively observed.
  • [x] I attached the full, untruncated log file.
  • [x] I attached the backtrace in the case of a crash.

mightyhuhn avatar Jun 05 '25 03:06 mightyhuhn

I can't reproduce it completely. In my tests, mpcvr outputs (255, 0, 0) and mpv outputs (255, 1, 0). ~~But it can be confirmed that the color output of mpv may be inaccurate.~~

dyphire avatar Jun 05 '25 04:06 dyphire

that's to be expect that's just dither noise the result i have is far outside of that. you can not reproduce the issue then. dither a 0 to a 1 shouldn't happen in an perfect world but in terms of math that's not odd.

mightyhuhn avatar Jun 05 '25 04:06 mightyhuhn

that's to be expect that's just dither noise the result i have is far outside of that. you can not reproduce the issue then. dither a 0 to a 1 shouldn't happen in an perfect world but in terms of math that's not odd.

Do you have an icc file applied to your system? When I use icc for color management the color output of mpv is way off, similar to your test.

dyphire avatar Jun 05 '25 04:06 dyphire

i checked that already but that was changed in win 11 and there seems to be none. i'm not used to the new menu. if there is one madVR nore displaycal isn't cable of reading that type and i only used displayCal to calibrate.

mightyhuhn avatar Jun 05 '25 04:06 mightyhuhn

1 unit shift could be caused by deband too.

hooke007 avatar Jun 05 '25 08:06 hooke007

i have added deband=no nothing changed the mpv option doesn't list this as an option but ` does not complain about wrong syntax so it should work? i also can't find deband as an option under I 2 so it shouldn't run. what so ever the error i'm having is 15.

should D:\mpv-x86_64-v3-20230716-git-cab5448>mpv.exe --version really be blank ever?

mightyhuhn avatar Jun 05 '25 08:06 mightyhuhn

It's (255, 1, 0) here with no-config, while (255, 0, 0) with adding dither=no (edit: Emm, --cscale=bilinear is also required.).

hooke007 avatar Jun 05 '25 08:06 hooke007

@mightyhuhn Can you open the file with mpv, press SHIFT + I and take a screenshot. I get a polluted output rgb(255, 18, 7) on my wide gamut display if I do not properly set --target-prim

NSQY avatar Jun 05 '25 09:06 NSQY

It's (255, 1, 0) here with no-config, while (255, 0, 0) with adding dither=no (edit: Emm, --cscale=bilinear is also required.).

cscale=bilinear does not matter here it is still doing ~255 15 3 here

@mightyhuhn Can you open the file with mpv, press SHIFT + I and take a screenshot. I get a polluted output rgb(255, 18, 7) on my wide gamut display if I do not properly set --target-prim

sure:

Image

edit GPU-next:

Image /edit my display is a S90C which is wide gamut but i run it in SDR mode. as long as you are using SDR target-prim shouldn't be needed shouldn't it?

mightyhuhn avatar Jun 05 '25 09:06 mightyhuhn

should D:\mpv-x86_64-v3-20230716-git-cab5448>mpv.exe --version really be blank ever?

No. There is something wrong with the latest zhongfly, mpv.exe --version is blank for me also.

This should be the output:

mpv --version
mpv v0.40.0-112-gb3070d125 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
 built on May  9 2025 12:12:50
libplacebo version: v7.350.0 (v7.349.0-66-g72fb3c6-dirty)
FFmpeg version: N-119458-g4e5523c98
FFmpeg library versions:
   libavcodec      62.3.101
   libavdevice     62.0.100
   libavfilter     11.0.100
   libavformat     62.0.102
   libavutil       60.2.100
   libswresample   6.0.100
   libswscale      9.0.100

NSQY avatar Jun 05 '25 09:06 NSQY

should D:\mpv-x86_64-v3-20230716-git-cab5448>mpv.exe --version really be blank ever?

No. There is something wrong with the latest zhongfly, mpv.exe --version is blank for me also.

This should be the output:

mpv --version
mpv v0.40.0-112-gb3070d125 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
 built on May  9 2025 12:12:50
libplacebo version: v7.350.0 (v7.349.0-66-g72fb3c6-dirty)
FFmpeg version: N-119458-g4e5523c98
FFmpeg library versions:
   libavcodec      62.3.101
   libavdevice     62.0.100
   libavfilter     11.0.100
   libavformat     62.0.102
   libavutil       60.2.100
   libswresample   6.0.100
   libswscale      9.0.100

i replaced it with mpv-x86_64-20250603-git-e8f115e from https://github.com/mitzsch/mpv-winbuild/releases same issue still blank. what so ever not the topic here just wanted to make sure i at least tried to follow instructions. thanks for confirming.

mightyhuhn avatar Jun 05 '25 10:06 mightyhuhn

on a side note. there is a difference between using mpv.exe and mpv.com. the latter (mpv.com) is the CLI wrapper and the former is the GUI application, i believe. so you either have to call mpv --version (without .exe, uses mpv.com) or mpv.com --version.

Akemi avatar Jun 05 '25 10:06 Akemi

my display is a S90C which is wide gamut but i run it in SDR mode. as long as you are using SDR target-prim shouldn't be needed shouldn't it?

By default mpv should not be trying to do anything to BT.601 and BT.709, unless you have --target-prim set to something else or an ICC profile applied.

Artoriuz avatar Jun 05 '25 10:06 Artoriuz

on a side note. there is a difference between using mpv.exe and mpv.com. the latter (mpv.com) is the CLI wrapper and the former is the GUI application, i believe. so you either have to call mpv --version (without .exe, uses mpv.com) or mpv.com --version.

ahh i see a com file is a fallback/default cli for none path application in the same folder or how does that work? i didn't even knew windows could do that and "mpv" would only work if i would have added it to the path so it would behave similar to most linux stuff so i didn't even try:

D:\mpv-x86_64-v3-20230716-git-cab5448>mpv --version mpv v0.40.0_1-116-ge8f115e1e Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects built on Jun 3 2025 16:53:01 libplacebo version: v7.351.0 (v7.351.0-4-gc311355-dirty) FFmpeg version: git-2025-06-03-917d4264d FFmpeg library versions: libavcodec 62.3.101 libavdevice 62.0.100 libavfilter 11.0.100 libavformat 62.0.102 libavutil 60.3.100 libswresample 6.0.100 libswscale 9.0.100

this is should be the mitzsch build now.

mightyhuhn avatar Jun 05 '25 11:06 mightyhuhn

ahh i see a com file is a fallback/default cli for none path application in the same folder or how does that work?

as far as i know, executables with a .com extension take priority over .exe if they have the same name (in the same folder). i am not using windows, so i don't know (all) the specifics.

Akemi avatar Jun 05 '25 11:06 Akemi

https://github.com/mpv-player/mpv/issues/16418#issuecomment-2943488105 I cannot get (255 15 3) in your screenshot.

hooke007 avatar Jun 05 '25 11:06 hooke007

i found the source of the issue. it looks like mpc-hc and mpc-be have workarounds for it already in place.

windows got new calibration and colour management settings see here:

Image if "automatically manage colours for apps" is on it will mess up mpv.

the mpc-hc exe is using legacy Image mpc-be seems to work around that some other way.

a pal secam to bt 709 could roughly explain the added green. another glorious victory for microsoft beautiful "progression"...

mightyhuhn avatar Jun 05 '25 15:06 mightyhuhn

i found the source of the issue. it looks like mpc-hc and mpc-be have workarounds for it already in place.

windows got new calibration and colour management settings see here:

Image if "automatically manage colours for apps" is on it will mess up mpv.

I'm sure I've seen issue talked about before. Not sure if it was for mpv or something else though.

netExtra avatar Jun 05 '25 16:06 netExtra

related https://github.com/mpv-player/mpv/issues/14567

hooke007 avatar Jun 05 '25 16:06 hooke007

i remember clsid talking about issue with one user where HDR was messed up with the new update mpcVR.

as a workaround (please double check) windows executables can be shipped with "use legacy display icc colour management" until a proper fix has been implemented. this should be save it will just behave like before the update which is supposedly can do just fine. i just checked that and it works flawless here in a very short test.

edit: this issue should be renamed to "incompatibility with new windows colour management" or something like that

mightyhuhn avatar Jun 05 '25 16:06 mightyhuhn

a pal secam to bt 709 could roughly explain the added green. another glorious victory for microsoft beautiful "progression"...

Erm, that would be correct color managment assuming it is tagged as PAL BT.601 primaries.

SECAM is not a color space, I mean it uses "9 bottles" signalling scheme and technically YDbDr color space.

edit: this issue should be renamed to "incompatibility with new windows colour management" or something like that

Yes, 24H2 to be precise.

ValeZAA avatar Jun 26 '25 16:06 ValeZAA

a pal secam to bt 709 could roughly explain the added green. another glorious victory for microsoft beautiful "progression"...

Erm, that would be correct color managment assuming it is tagged as PAL BT.601 primaries.

SECAM is not a color space, I mean it uses "9 bottles" signalling scheme and technically YDbDr color space.

edit: this issue should be renamed to "incompatibility with new windows colour management" or something like that

Yes, 24H2 to be precise.

it is tagged bt 709. the current best guess is that that windows is doing a conversation behind mpv back (not other video renderers/software) using a new color management option that on paper makes a lot of sense for very old software.

it is not doing bt601 to bt 709 i tested that. and no SECAM does not simply use bt 601 that would make things much easier and SDR stuff is never just easy. if it is smpte-c, bt470(part of secam) or ebu to bt 709 i do not know.

mightyhuhn avatar Jun 26 '25 20:06 mightyhuhn

it is tagged bt 709.

Oh! Indeed, primaries tagged as BT.709. Anyway, here mpv uses 255, 1, 0 (actually a pattern of 255, 1, 0 and 255, 0, 0 ) with new color managent and 254, 1, 0 with legacy color managment enabled. That is in SDR mode, in HDR mode it is a little different, and I dunno how to measure that.

I use Intel iGPU from Intel Arrow Lake though. It has its quirks. I am using 12 bit color SDR space as well, not 8 bit (Arrow Lake has HDMI 2.1 48 gbit/s, so allows for 4K120 12 bit). Right now Arrow Lake decodes BT.709 as BT.601 in Chrome! https://issues.chromium.org/issues/392189253?pli=1 Thankfully it is not an issue here!

ValeZAA avatar Jun 26 '25 22:06 ValeZAA

then you are not affected. odd... this should be universal issue the GPU shouldn't matter.

you have just not perfect dithering/compression artifacts as an error.

i will test later on my 9060 xt system if something similar happens.

mightyhuhn avatar Jun 27 '25 04:06 mightyhuhn

then you are not affected. odd... this should be universal issue the GPU shouldn't matter.

I mean, it should decode as 255 using legacy. I am affected with some additional bug.

YCbCr values are 63, 102, 240. When decoded they should decode as 255, 0, 0. Check this: https://res18h39.netlify.app/color

ValeZAA avatar Jun 27 '25 06:06 ValeZAA

yeah i know but dithering does not care. it's 0.5 g combined with coloured dithering will result in a 254 from time to time and you need to check every single pixel it will not be the same sadly lossy encoding will add some errors. i reported other issues with grey scale before but no one cared. very small again.

dithering is really complicated red has very low brightness but green has very high brightness so if the dithering algorithm wants to keep the AVG brightness of the image not color which is usually more important a 254 1 0 makes sense instead of 255 1 0 which is now quite a lot brighter and this is still very very simplified.

mightyhuhn avatar Jun 27 '25 09:06 mightyhuhn

i found the source of the issue. it looks like mpc-hc and mpc-be have workarounds for it already in place. windows got new calibration and colour management settings see here: Image if "automatically manage colours for apps" is on it will mess up mpv.

I'm sure I've seen issue talked about before. Not sure if it was for mpv or something else though.

By disabling this new option I actually manage to get the 255, 1, 0 color by default. So this is just an option that needs to be disabled and be done with it. It is sooo over!!

ValeZAA avatar Jun 28 '25 05:06 ValeZAA

It's (255, 1, 0) here with no-config, while (255, 0, 0) with adding dither=no (edit: Emm, --cscale=bilinear is also required.).

Here actually after disabling that new "Automatically manage color for apps" -dither=no is enough to get 255, 0, 0.

I also just confirmed that "Automatically manage color for apps" is what causes chrome issue https://issues.chromium.org/issues/392189253?pli=1 so it is the bug you have. ANYWAY, SOLVED. Bug in windows and anyway, the new option is lossy garbage.

ValeZAA avatar Jun 28 '25 10:06 ValeZAA

Bug in windows and anyway, the new option is lossy garbage.

Is there anything actionable on mpv side? Or we can go ahead and close this issue?

kasper93 avatar Jun 28 '25 15:06 kasper93

setting compatibility to legacy fixes it mpc-hc does that too.

it is not known why mpv is on some system seen as something that needs colorcorrection according to microsoft. other software can deal with it just fine other systems work with it using mpv.

disabling the new colorcorrection is also a workaround but doesn't make the issue go away... there seem to be HDR issues to: https://github.com/mpv-player/mpv/issues/14567

mpv could be shipped with legacy colorcorrection and everything will work as before until someone knows how microsoft applies this option and how it figures out why program A needs correction and B doesn't.

there is something that trigger it if it is a bug created by microsoft or microsoft guessing mpv is a legit reason to think this is software from the 199x i can not say.

mightyhuhn avatar Jun 29 '25 05:06 mightyhuhn