Skip to content

Enabling icc-profile-auto dynamically does not work #17385

@low-batt

Description

@low-batt

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 iina/iina#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 iina/iina#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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions