Color fidelity for Web Browsers
Issue | Chrome on windows | Chrome on OSX | Chrome on Linux | Firefox on windows | Firefox on OSX | Firefox on Linux | Safari on OSX | Safari on IOS | How to test |
---|---|---|---|---|---|---|---|---|---|
Uses monitor ICC Profiles for png files | Yes * | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Do you see differences in the images here: https://richardssam.github.io/ffmpeg-tests/tests/greyramp-osx/compare.html?.png |
Uses monitor ICC Profiles of native OS for mp4 and mov | No | Yes | no | no | no | no | Yes | ? | |
Ability to disable system profile | no | no | Yes | Yes | Yes | no | no | ||
Obeys NCLC Color Transfer Characteristic Parameters (TRC) | Partially see below | no | no | no | no | no | Partially - see below | no | If the following link https://richardssam.github.io/ffmpeg-tests/tests/greyramp-osx/compare.html?.colortrc shows all the ramps looking the same, its not supported. |
Color TRC 1 = rec709 | No. - See note 1 | no | no | no | no | no | No. - See note 1 | no | |
Color TRC 2 = undefined | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
Color TRC 4 = gamma22 | Yes - see note 3 | no | no | no | no | no | no | no | |
Color TRC 5 = gamma28 | Yes - see note 3 | no | no | no | no | no | no | no | |
Color TRC 8 = linear | Yes - see note 3 | Yes | no | no | no | no | Yes | no | |
Color TRC 9 = log | no | no | no | no | no | ||||
color TRC 13 = sRGB | Yes - see note 3 | Yes | no | no | Yes | no | |||
Supports gamma in mov file | no | no | no | no | no | no | Yes | no | |
Interprets full range 8-bit YUV mp4's | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
Supports 10-bit h264 mp4's | Yes | Yes | Yes | no | no | no | no | no | |
h265 support | no | no | no | no | no | no | yes? | no | |
Gamut Support | |||||||||
Supports different gamuts with ICC profiles in PNG | Yes | Yes | Yes (See note 3) | no | no | no | Yes | Yes | |
Obeys NCLC Primaries (e.g. will it translate rec2020 media to display correctly) | Converts to rec709 gamut, ignores monitor. | Yes | no | no | no | no | Yes | Converts to rec709 gamut, ignores monitor. | If you see the text Rec2020 and your monitor does not support rec2020 then the browser is not supported: https://richardssam.github.io/ffmpeg-tests/gamuttests/iccgamut/greyscale-rec2020.mp4 |
Notes:
TRC 1 (rec709 camera) for chrome on windows uses a sRGB transfer function. see comment 32: https://bugs.chromium.org/p/chromium/issues/detail?id=784713#c35 or ~line995 of https://chromium.googlesource.com/chromium/src/+/refs/heads/main/ui/gfx/color_space.cc
Color shift on Chrome, reported: https://bugs.chromium.org/p/chromium/issues/detail?id=1262622 this seems to only be an issue with multiple videos on the same page.
The wide-gamut.com page is reporting that it has a wide gamut, but I'm not seeing the Red W on the test page. It would be good to get confirmation.
Chrome on windows and linux
You have the option of forcing what sort of display you would like to default to. This directly affects how video is rendered.
chrome://flags/#force-color-profile
So you can force the display to be a sRGB display and all media is adjusted accordingly. You can similarly do this for Display-P3, "Color-Spin with gamma 2.4", HDR10.
Other Links
https://mux.com/blog/your-browser-and-my-browser-see-different-colors/
https://www.wide-gamut.com/test - Awesome page for testing wide-gamut displays.
https://www.benq.eu/en-uk/knowledge-center/knowledge/display-p3-monitor-for-creative-work.html
Test Images