[enhancement] Add support for limited/full RGB range selection on HDMI outputs

Bug #1668159 reported by Daniel van Vugt
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Mir
Triaged
Medium
Unassigned
mir (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

Add support for limited/full RGB range selection on HDMI outputs.

Users of HDMI connected TVs might be familiar with the problem of blacks displayed as grey, or dark shades being too dark. These are both consequences of a mismatch between the range of the HDMI signal being output and what the HDMI display (usually a TV) expects.

The two possible ranges of values for 8 bit per component are:
Full: 0-255
Limited: 16-235 (where 16 is the blackest black and 235 is the whitest white)

The HDMI 1.3a spec clarified expected default behaviour in its table 6-3 (section 6.6) and that
"While using RGB, Limited Range shall be used for all video formats
defined in CEA-861-D, with the exception of VGA (640x480) format, which requires Full Range."

So apparently the correct default range for 8-bit output to HDMI is limited 16-235. However, a monitor's EDID may provide more information indicating that full range is preferable (and expected for correct colour output).

The i915 kernel driver appears to give us a connector property "Broadcast RGB" for controlling this setting (auto/full/limited). So we should implement that. It's likely to also be useful in other future drivers, albeit with different implementations.

If your device (Mir) and display support changing this setting then the optimal setup is:
  Output: Full range
  Display: Full range (AKA Black level "high" or "normal").

But if your device (Mir) doesn't yet support changing the setting, and your HDMI-connected TV looks a bit wrong then you can probably just change the TV settings:

Picture is too dark/black: Likely problem is that your device is outputting full range and your TV is expecting limited. Change your TV settings to Black level = Normal or High

Picture is washed out (blacks appear grey and whites are dim): Likely problem is that your device is outputting limited range and your TV is configured for full range. Change your TV settings to Black level = Low (which means to treat 16 as full black and 235 as full white).

The terminology might sound backwards, but in a TV's settings menus "low" black level means signal level 16 is full black (ie. make it visually lower), and "high" or "normal" black level means to make signal level 16 visually higher if it looks black (and real black is then level 0).

description: updated
description: updated
tags: removed: visual
description: updated
description: updated
description: updated
description: updated
Revision history for this message
Michał Sawicz (saviq) wrote :

Syncing task from Mir.

Changed in mir (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.