mpv-player / mpv-player/mpv

Enabling icc-profile-auto dynamically does not work

Open
#17,385 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

mpv Information
Tested with brew installed mpv:

low-batt@gag issue-5912$ mpv --version
mpv v0.41.0 Copyright © 2000-2025 mpv/MPlayer/mplayer2 projects
libplacebo version: v7.351.0
FFmpeg version: 8.0.1
FFmpeg library versions:
   libavcodec      62.11.100
   libavdevice     62.1.100
   libavfilter     11.4.100
   libavformat     62.3.100
   libavutil       60.8.100
   libswresample   6.1.100
   libswscale      9.1.100

As well as my own build from the master branch:

low-batt@gag mpv-build (master %=)$ mpv/build/mpv --version
mpv v0.41.0-162-g9ccd8899f Copyright © 2000-2026 mpv/MPlayer/mplayer2 projects
 built on Feb  6 2026 21:51:06
libplacebo version: v7.358.0 (v7.351.0-147-g1a7f88fd)
FFmpeg version: n8.0.1
FFmpeg library versions:
   libavcodec      62.11.100
   libavdevice     62.1.100
   libavfilter     11.4.100
   libavformat     62.3.100
   libavutil       60.8.100
   libswresample   6.1.100
   libswscale      9.1.100
Other Information
- macOS version: macOS 15.7.2 (24G325)
- Source of mpv: brew installed as well as my own master build
- Latest known working version: unknown
- Issue started after the following happened: unknown
Reproduction Steps

Changing icc-profile-auto dynamically using the JSON IPC interface when --vo=libmpv is specified only works when sending no to disable use of the ICC profile. Sending yes does not enable use of the ICC profile. If mpv is invoked with --vo=gpu or --vo=gpu-next then icc-profile-auto can be toggled on and off successfully.

This problem originates from an investigation into IINA issue https://github.com/iina/iina/issues/5912

On my MacBook Pro running macOS Sequoia 15.7.2 and attached to a LG UltraFine display I set the macOS Color profile to Rec. ITU-R BT.2020-1. Wtih this configuration displaying the PNG file attached to that IINA issue differs depending on whether the ICC profile is used or not so I can see if icc-profile-auto is working or not.

Running mpv with this command:

mpv --no-config --gpu-debug --log-file=output.txt --hidpi-window-scale=yes --icc-profile-auto=yes --input-ipc-server=/tmp/mpv-socket --pause --vo=libmpv 545511771-9dd72097-8afe-41d9-8632-4d02884489cf.png

The PNG looks like this:

Image

Upon running this command in Terminal:

echo '{ "command": ["set_property", "icc-profile-auto", "no"] }' | socat - /tmp/mpv-socket | jq

The PNG looks like this:

Image

Running this should reapply the ICC profile:

echo '{ "command": ["set_property", "icc-profile-auto", "yes"] }' | socat - /tmp/mpv-socket | jq

But the image does not change.

With --vo=gpu or --vo=gpu-next the mpv correctly responds to dynamic changes to icc-profile-auto.

Expected Behavior

Dynamically setting icc-profile-auto behaves the same way whether --vo is set to libmpv, gpu or gpu-next.

Actual Behavior

With --vo=libmpv icc-profile-auto can be dynamically disabled, but cannot be dynamically enabled like it can with --vo=gpu and --vo=gpu-next.

Log File

output.txt

Sample Files

I am testing with the PNG file attached to IINA issue https://github.com/iina/iina/issues/5912

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

Start by reproducing the JSON IPC toggle with --vo=libmpv, then compare it with --vo=gpu and --vo=gpu-next using the commands and output.txt provided. Trace how icc-profile-auto changes are handled for libmpv and verify that enabling it reapplies the ICC profile as it does for the other video outputs.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.