Videos look washed out on macOS unless media.rdd-process.enabled is false
Categories
(Core :: Graphics: Color Management, defect)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr140 | --- | unaffected |
| firefox-esr153 | --- | unaffected |
| firefox155 | + | wontfix |
| firefox156 | + | verified |
| firefox157 | + | verified |
People
(Reporter: padenot, Assigned: padenot)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression)
Attachments
(6 external files, 3 obsolete files)
Comment 1•1 month ago
|
||
Set release status flags based on info from the regressing bug 2039373
:bradwerth, since you are the author of the regressor, bug 2039373, could you take a look? Also, could you set the severity field?
For more information, please visit BugBot documentation.
Comment 2•1 month ago
|
||
[Tracking Requested - why for this release]:
Significant regression in video playback on macos.
Updated•1 month ago
|
| Assignee | ||
Comment 3•1 month ago
|
||
gen_combos.py cross combines a single colour space name into primaries,
transfer and matrix, so the generated corpus cannot express BT.2100 PQ or HLG,
or wide gamut SDR. Those are the cases where a decoder has to report a transfer
function that is not implied by the primaries, which is what the macOS
VideoToolbox path gets wrong.
Add a second, explicit set of combinations for those, signalled through
x265-params and svtav1-params so the values land in the bitstream rather than
only in the container, plus HEVC, which is the codec VideoToolbox most reliably
decodes in hardware on macOS and which the corpus had no coverage of at all.
The samples are transfer converted with zscale rather than merely tagged, so
regenerating them needs an ffmpeg built with libzimg. Within a combination the
samples are identical across codecs, so codec to codec comparisons isolate the
container and decoder rather than the encode.
Updated•1 month ago
|
| Assignee | ||
Comment 4•1 month ago
|
||
Exhaustive over the cross product of transfer function and colour primaries,
because the rule is a pure function of those two and the combinations codecs
happen to emit are only a subset of what has to be right.
Plus one end to end check per side, decoding through VideoToolbox in process
and inspecting the IOSurface the compositor would receive: an SDR frame keeps
the colorspace VideoToolbox gave it, and a PQ frame still gets an explicit one.
| Assignee | ||
Comment 5•1 month ago
|
||
Updated•1 month ago
|
Comment 7•1 month ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/cd2c2bcb80b3
https://hg.mozilla.org/mozilla-central/rev/b6b9b30cb25c
https://hg.mozilla.org/mozilla-central/rev/963c8ed70a98
Comment 8•1 month ago
|
||
The patch landed in nightly and beta is affected.
:padenot, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- See https://wiki.mozilla.org/Release_Management/Requesting_an_Uplift for documentation on how to request an uplift.
- If no, please set
status-firefox156towontfix.
For more information, please visit BugBot documentation.
| Assignee | ||
Comment 9•1 month ago
|
||
gen_combos.py cross combines a single colour space name into primaries,
transfer and matrix, so the generated corpus cannot express BT.2100 PQ or HLG,
or wide gamut SDR. Those are the cases where a decoder has to report a transfer
function that is not implied by the primaries, which is what the macOS
VideoToolbox path gets wrong.
Add a second, explicit set of combinations for those, signalled through
x265-params and svtav1-params so the values land in the bitstream rather than
only in the container, plus HEVC, which is the codec VideoToolbox most reliably
decodes in hardware on macOS and which the corpus had no coverage of at all.
The samples are transfer converted with zscale rather than merely tagged, so
regenerating them needs an ffmpeg built with libzimg. Within a combination the
samples are identical across codecs, so codec to codec comparisons isolate the
container and decoder rather than the encode.
Original Revision: https://phabricator.services.mozilla.com/D323303
Updated•1 month ago
|
| Assignee | ||
Comment 10•1 month ago
|
||
Exhaustive over the cross product of transfer function and colour primaries,
because the rule is a pure function of those two and the combinations codecs
happen to emit are only a subset of what has to be right.
Plus one end to end check per side, decoding through VideoToolbox in process
and inspecting the IOSurface the compositor would receive: an SDR frame keeps
the colorspace VideoToolbox gave it, and a PQ frame still gets an explicit one.
Original Revision: https://phabricator.services.mozilla.com/D323304
Updated•1 month ago
|
Comment 11•1 month ago
|
||
firefox-beta Uplift Approval Request
- User impact if declined/Reason for urgency: Broken rendering of SDR (non-HDR, meaning, the common case) videos: colors are washed out (blacks are grey, whites are grey). macOS only.
- Code covered by automated testing?: yes
- Fix verified in Nightly?: yes
- Needs manual QE testing?: yes
- Steps to reproduce for manual QE testing: Open random videos (e.g. youtube is just fine) on macOS, Apple Silicon or regular, especially if they have dark regions: the blacks should be black. Safari or Chrome should have similar colors.
If on mac that is HDR capable, https://paul.cx/public/test-videos/test-videos.html?video=bt2111-hlg-3840x2160-libsvtav1-yuv420p10.webm should render super bright.
- Risk associated with taking this patch: medium
- Explanation of risk level: Reviewed by 2 people, well tested.
- String changes made/needed?: none
- Is Android affected?: no
| Assignee | ||
Comment 12•1 month ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D323305
| Assignee | ||
Comment 13•1 month ago
|
||
gen_combos.py cross combines a single colour space name into primaries,
transfer and matrix, so the generated corpus cannot express BT.2100 PQ or HLG,
or wide gamut SDR. Those are the cases where a decoder has to report a transfer
function that is not implied by the primaries, which is what the macOS
VideoToolbox path gets wrong.
Add a second, explicit set of combinations for those, signalled through
x265-params and svtav1-params so the values land in the bitstream rather than
only in the container, plus HEVC, which is the codec VideoToolbox most reliably
decodes in hardware on macOS and which the corpus had no coverage of at all.
The samples are transfer converted with zscale rather than merely tagged, so
regenerating them needs an ffmpeg built with libzimg. Within a combination the
samples are identical across codecs, so codec to codec comparisons isolate the
container and decoder rather than the encode.
Original Revision: https://phabricator.services.mozilla.com/D323303
Updated•1 month ago
|
| Assignee | ||
Comment 14•1 month ago
|
||
Exhaustive over the cross product of transfer function and colour primaries,
because the rule is a pure function of those two and the combinations codecs
happen to emit are only a subset of what has to be right.
Plus one end to end check per side, decoding through VideoToolbox in process
and inspecting the IOSurface the compositor would receive: an SDR frame keeps
the colorspace VideoToolbox gave it, and a PQ frame still gets an explicit one.
Original Revision: https://phabricator.services.mozilla.com/D323304
Updated•1 month ago
|
Comment 15•1 month ago
|
||
firefox-release Uplift Approval Request
- User impact if declined/Reason for urgency: Broken rendering of SDR (non-HDR, meaning, the common case) videos: colors are washed out (blacks are grey, whites are grey). macOS only.
- Code covered by automated testing?: yes
- Fix verified in Nightly?: yes
- Needs manual QE testing?: yes
- Steps to reproduce for manual QE testing: Open random videos (e.g. youtube is just fine) on macOS, Apple Silicon or regular, especially if they have dark regions: the blacks should be black. Safari or Chrome should have similar colors.
If on mac that is HDR capable, https://paul.cx/public/test-videos/test-videos.html?video=bt2111-hlg-3840x2160-libsvtav1-yuv420p10.webm should render super bright.
- Risk associated with taking this patch: medium
- Explanation of risk level: Reviewed by 2 people, well tested.
- String changes made/needed?: none
- Is Android affected?: no
| Assignee | ||
Comment 16•1 month ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D323305
Updated•1 month ago
|
Updated•1 month ago
|
Updated•1 month ago
|
Updated•1 month ago
|
Comment 17•1 month ago
|
||
| uplift | ||
Updated•1 month ago
|
| Assignee | ||
Updated•1 month ago
|
Comment 18•1 month ago
|
||
Hello! I can confirm that the issue is fixed with firefox 157.0a1(2026-09-07) and 156.0b4 on MacOS 15.6.7.
I will update the flags and status of this issue accordingly.
Have a nice day!
Comment 19•1 month ago
|
||
Fx156 is now in release and 156.0 RC builds today
Updated•1 month ago
|
Updated•1 month ago
|
Updated•1 month ago
|
Description
•