RGB level forced to limited when HDMI audio is in use (GF610, Denon 4311, DLA-X70)

Hi,

I’m having a rather strange RGB level issue with one of my XBMC HTPCs when using HDMI audio. I don’t think this is really directly related to XBMC, hence I’m posting here.

Platform: Ubuntu 12.04.1 x86, XBMC Frodo RC, Asus GeForce 610 with 313.09 driver

  • connected via HDMI to a Denon 4311 AVR
  • which in turn is connected via HDMI to a JVC DLA-X70 projector

My goal is to keep the video chain completely in RGB full range. Both the PJ and the Denon provide options for that, and I have explicitely set ColorRange=“FULL” in xorg.conf.

The problem I have now is that this works as expected unless the NVIDIA driver detects HDMI audio. If that happens, the RGB range which arrives at the PJ is always limited, regardless of the options set in xorg.conf and in the Denon. Additionally, if I set ColorRange=“LIMITED” in xorg.conf, it seems that the RGB range is even more limited, suggesting that the conversion is taking place twice in that case.

Interesting datapoints:

– when I connect the HTPC to the PJ directly, the RGB range and color space are as expected and can be switched between RGB Full, RGB Limited and YUV via the according xorg.conf settings

– when I connect via the Denon, but use “UseEDID=FALSE” and use custom modelines to avoid having the NVIDIA driver read the Denon’s EDID and therefore detect HDMI audio, switching ColorRange also works as expected

– when I connect a Dune Smart B1 media player via the Denon, switching between Full and Limited Range in the Dune also yields the expected results. This suggests that this is not a general Denon problem.

– in all cases, nvidia-settings -q ColorRange reflects what is set in xorg.conf, not what is being displayed

I have also tried the NVIDIA 310.19 and 304.64 driver with exactly the same results.

I’ve read somewhere in a forum post that the Windows NVIDIA driver would automatically switch to Limited Range RGB when HDMI audio is in use. There is apparently a registry hack to avoid this. This is pretty much the behavior I’m seeing here as well, although nothing like this seems to be documented in the NVIDIA linux driver documentatio.

Is someone perhaps observing something similiar? I’m very interested whether this is a specific NVIDIA/Denon interoperability issue, something specific to the GeForce 610 class GPUs or whether I’m just overlooking something…

Thanks!

Best Regards,
Olli

Bug report log:

http://www.garagemaxx.de/nvidia-bug-report.log.gz

Are you able to reproduce this issue just by connecting HDMI display to GPU and play video/audio ? just want to know can we reproduce this issue with minimum hardware setup. What are the ways you are using to check RGB range is full or limited?

Hello,

I’m observing what seems to be very similar to what Olli reported. I have Zotac ZBOX HD-ID41 with Next Generation NVIDIA ION, Marantz SR7002 and a Panasonic TH-42PZ80E plasma. I recently upgraded from older NVIDIA hardware and the black level changed even though my settings remain precisely the same. Black now appears grey on tv whereas with the old GF8200 black really was black.

I’ve yet to try the fixes Olli mentioned as the TV is currently “in production” but once the family is away for few days I’ll take a shot at them.

A way to force the driver to really use “full rgb” or “limited rgb” no matter what would be really nice.

Hello,
I’m experiencing a very similar situation - blacks look grey and washed out and screen brightness is too high. I’m using Arch x86_64 and have tried both the 313.26-2 and 304.84-1 drivers. I have a Denon AVR 3310 receiver and a Panasonic P55ST30A plasma. Both are capable of 0-255. Occurs only when HDMI from my GT430 is connected to the receiver. If I use HDMI to plasma and S/PDIF to the Denon then I can choose either the Full or Limited RGB settings and they behave as desired, and without issue.

Oddly, if I open nvidia-settings and switch from Full to Limited, the blacks appear good, until I begin playing a video with audio. Happens not only in XBMC but also VLC and others. Pretty sure this is not an XBMC issue since after a reboot, even the desktop wallpaper and terminals appear incorrect brightness.

I’ll try and produce the nvidia-bug-report.sh output as suggested.

I have the same thing and this doesn’t look like a new problem. Lot of reports about this on the net. There is a tool/registry hack to fix this on Windows:
http://blog.metaclassofnil.com/?p=83

However, there doesn’t seem to be any fix/workaround on Linux at all. This is very frustrating and is pretty much the sole reason I haven’t yet switched to Linux full time.

Can Nvidia please consider providing a workaround/option to force Full RGB on Linux?

Bump.

Can Nvidia kindly comment on what the recommended settings are to watch movies on a Linux PC?

At the moment, I am considering switching to YCbCr where I can atleast see true black, though I’m not sure if this means no conversions from source to output or if this involves double conversion from YCbCr->RGB->YCbCr. Can Nvidia confirm how VDPAU handles YCbCr?

Of course, this still doesn’t help with desktop usage and for pictures.

So, this just got more interesting. In YCbCr, the movie displays darker than expected (a bit like black crush).

I switched the color space setting in nvidia control panel to YCbCr and my monitor detects and adjusts itself properly. If I now play a movie with this and -vo vdpau, the movie renders darker than normal and most of the details in dark areas are lost. It almost seems as if nvidia is outputting the movie in full range (0-255) resulting in dark areas (0-15) being clipped.

If I use -vo xv or -vo gl, the movie renders properly and I can see detail in darker areas.

Is this a known issue?

Tried two different driver versions (the latest 337.12 and the older 304.121) and results are the same. Vdpau just does not output proper colors in YCbCr mode.

On the plus side, I found that Intel has provided workaround for their drivers to operate under full RGB: xrandr --output --set “Broadcast RGB” “Full”. Nice!