Kodi Community Forum

Full Version: [Nvidia Shield] Colorspace wrong when auto-framerate enabled in Kodi otherwise fine
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Setup-Up
Shield TV P2897
SW: 6.2
Config 1: Direct to LG OLED C6
Config 2: Via Oppo UDP203 HDMI Input - - > LG OLED C6
App: Kodi (older and newer versions, doesn't matter, same issue). GUI set to 4K 59.94 fps.

Scenario: Play any 4K 10bit HDR 24fps test file

Condition 1:
- Set Shield Display to 3840x2160 59.94 10bit rec 2020 (i.e. HDR)
- Set Kodi to disable framerate switching (i.e. force content to play at 59.94fps)

Use Kodi to play the test file and note that all is fine (10bit HDR sent to TV)

Condition 2: (framerate switching enabled in Kodi)
Play the same file and note that though framerate is now 24fps and HDR is enabled, there is banding in the sky (e.g. clouds, walls etc). TV does switch to HDR mode but banding is evident.

Conclusion: If enabling framerate switching, then 10bit colorspace is reduced to 8 bit.

I confirmed this also, by using my Oppo 203 BD player since that has a HDMI input and provides Info on the input and out signals it is handling. For condition 2 the Oppo reports 8 bit but for condition 1 it reports 10 bit.

Looks like a bug in the Mediacodec(surface) layer or the way Kodi and SPMC are driving it.

Any ideas?
If you use mediacodec (surface) we have no single influence on the colors. All done "internall" by android's mediacodec.
(2017-12-19, 11:41)fritsch Wrote: [ -> ]If you use mediacodec (surface) we have no single influence on the colors. All done "internall" by android's mediacodec.
 Understood. I have raised a ticket on the Nvidia forums.

https://forums.geforce.com/default/topic...wise-fine/

It would be great for someone else with the latest Shield firmware to verify too, in their environment.

I fear most users will not realise they have a worse image, since it is still 4K HDR but with reduced colour width. Less people reporting means chance of a fix is reduced.
(2017-12-19, 12:18)WhatTheManSaid Wrote: [ -> ] 
For anyone interested:

I have attached a video test file and some photo's of the issue that other can use to confirm if they see it.
Since I could not see how to add images here, I am sharing a link to the Nvidia forum where I have asked for support.

https://forums.geforce.com/default/topic...wise-fine/
Issue now confirmed by others on Nvidia forums.
https://forums.geforce.com/default/topic...wise-fine/

Suggestion that Kodi does not enable 10-bit video when framerate switching is enabled.

Any Kodi experts able to comment on how this works?
We don't have control on YUV format / colorspace / color depth when switching, only resolution and refreshrate.

My assumption is that the box only proposes to Kodi the reso/refreshrates which have the same YUV/colorspace/depth as the one specified by the user in the system settings, and that switching will only occur with same YUV/color, but neither my TV nor AVR show me those info.
I thought I validated the assumption when changing the system YUV sent different modes to Kodi, but this might be proved wrong.
(2017-12-20, 18:09)Koying Wrote: [ -> ]My assumption is that the box only proposes to Kodi the reso/refreshrates which have the same YUV/colorspace/depth as the one specified by the user in the system settings, and that switching will only occur with same YUV/color, but neither my TV nor AVR show me those info.
Is there a way to see the which YUV/colorspace/depth settings are being exposed by the system to Kodi? My observation is that not only the YCbCr color space switches from 420 to 422 but also the bit depth from 10 to 8 when the refresh rate switch happens.
Happy to run a debug build or capture specific logs from my setup if that helps.
in fact you can just switch the resolution directly without kodi doing that. It should reveal the very same results. For the 422 YUV basically makes no sense for kodi itself and also not for the content that is played back, most likely yuv 420 10 bit precission. If it's for 8 bit yuv 420 - at least nothing breaks ...

In short: we have no influence, we don't even touch the surfaces that are rendered. Kodi is managing the blackbox (Bypass render with mediacodec surface).

So compare what happens with kodi vs. switching refreshrate manually and using another player of your choice that supports mediacodec surface.
I think the plot thickens ;-)

Though 4K 4:2:0 10 24Hz video is common now (in fact UHD standard), HDMI spec does not support support it at 24fps (no idea why they decided that).
The player/source is thus supposed to convert 4:2:0 10 bit to 4:2:2 12 bit before sending to the display. 24fps at 4:2:2 12 bit is supported by HDMI spec.

So should Kodi be setting that conversion up or Mediacodec(surface) ?
Okay, here are my findings ...

First of all, let's see what the HDMI spec says:
What are the 4K formats supported by HDMI 2.0?

So if you set your SHIELD to a 4K resolution with Rec.2020 10bits and 4:2:0 the only refresh rates supported are 50Hz and 60Hz according to the standard.
And in fact the advanced HDMI configuration menu of the SHIELD only shows 50Hz, 59.94Hz and 60Hz for this setting.
This means it's definitely not Kodi's fault and there's nothing that could be done there, 24p is simply not supported for Rec.2020 10bit 4:2:0. I.e. a refresh rate switch for this setting simply doesn't make a lot of sense.

However, Rec.2020 12bit 4:2:2 does seem to support all refresh rates and indeed you will see all refresh rates from 24Hz up to 60Hz in the advanced HDMI configuration menu.
BUT I couldn't get the SHIELD to actually output a 12bit signal, all I get is 4:2:2 with 8bits with this setting ... I'm pretty sure it's a SHIELD OS bug but I can't say for certain.

Bottom line:
If you want 10bits and a banding free image you're stuck with Rec.2020 10bit 4:2:0 and 50Hz or 60Hz - i.e. no 24p output. You then should disable the refresh rate switch in Kodi since it will fallback to a 4:2:2 8bit setting.
The alternative would be Rec.2020 12bit 4:2:2 but this mode simply doesn't seem to work.

I'm not sure if Kodi has access to the exact HDMI settings of the system but if it does I would suggest that it shows a list of available refresh rates for the current mode. This could prevent some confusion about which refresh rates are available and which are not.
(2017-12-21, 14:45)Herakles HD Wrote: [ -> ]Okay, here are my findings ...

First of all, let's see what the HDMI spec says:
What are the 4K formats supported by HDMI 2.0?

So if you set your SHIELD to a 4K resolution with Rec.2020 10bits and 4:2:0 the only refresh rates supported are 50Hz and 60Hz according to the standard.
And in fact the advanced HDMI configuration menu of the SHIELD only shows 50Hz, 59.94Hz and 60Hz for this setting.
This means it's definitely not Kodi's fault and there's nothing that could be done there, 24p is simply not supported for Rec.2020 10bit 4:2:0. I.e. a refresh rate switch for this setting simply doesn't make a lot of sense.

However, Rec.2020 12bit 4:2:2 does seem to support all refresh rates and indeed you will see all refresh rates from 24Hz up to 60Hz in the advanced HDMI configuration menu.
BUT I couldn't get the SHIELD to actually output a 12bit signal, all I get is 4:2:2 with 8bits with this setting ... I'm pretty sure it's a SHIELD OS bug but I can't say for certain.

Bottom line:
If you want 10bits and a banding free image you're stuck with Rec.2020 10bit 4:2:0 and 50Hz or 60Hz - i.e. no 24p output. You then should disable the refresh rate switch in Kodi since it will fallback to a 4:2:2 8bit setting.
The alternative would be Rec.2020 12bit 4:2:2 but this mode simply doesn't seem to work.

I'm not sure if Kodi has access to the exact HDMI settings of the system but if it does I would suggest that it shows a list of available refresh rates for the current mode. This could prevent some confusion about which refresh rates are available and which are not.
Thanks for testing.
I see exactly the same behavior.
UHD bluray players do output 4:2:2 12 bit and they are starting with 4:2:0 10bit on disc and upsampling it.
(2017-12-21, 14:45)Herakles HD Wrote: [ -> ]Okay, here are my findings ...
BUT I couldn't get the SHIELD to actually output a 12bit signal, all I get is 4:2:2 with 8bits with this setting ... I'm pretty sure it's a SHIELD OS bug but I can't say for certain.
nVIDIA Shield does output 12-bit YCbCr 4:2:2. What I haven't confirmed is whether this is zero padded 8/10-bit signal or converted 12-bit signal. If your TV/Projector/AVR is showing the color depth based on the Deep Color bit in HDMI GCP, it will report the signal as 8-bit. By design YCbCr 4:2:2 signal is split across the three TMDS channels. Channel 0 carries the lower order (0-3) bits of Y, Cb and Cr. The sink has to multiplex this signal to get the 12-bit YCbCr 4:2:2 signal.
The banding that people report on LG OLED TVs with 4:2:2 input is due to the way LG TVs process the signal. LG had a firmware update that presumably corrected this issue.
(2017-12-21, 18:46)wesk05 Wrote: [ -> ]If your TV/Projector/AVR is showing the color depth based on the Deep Color bit in HDMI GCP, it will report the signal as 8-bit.

If that was the case, wouldn't it report a 8-bit signal for 4:2:0 10bit as well?
But it actually shows "4:2:0 30 bits" if I set the SHIELD to "Rec. 2020 4:2:0 10bits" and "4:2:2 24 bits" if I set it to "Rec. 2020 4:2:2 12bits".

Furthermore I can clearly see the quantization artifacts in the Spears & Munsil test video for the 4:2:2 12bits setting but not for the 4:2:0 10bits setting.
Which leads me to the conclusion that the signal for 4:2:2 12bits in fact has only 8bits instead of 12bits as shown in the info.
(2017-12-21, 19:24)Herakles HD Wrote: [ -> ]If that was the case, wouldn't it report a 8-bit signal for 4:2:0 10bit as well?
But it actually shows "4:2:0 30 bits" if I set the SHIELD to "Rec. 2020 4:2:0 10bits" and "4:2:2 24 bits" if I set it to "Rec. 2020 4:2:2 12bits".

Furthermore I can clearly see the quantization artifacts in the Spears & Munsil test video for the 4:2:2 12bits setting but not for the 4:2:0 10bits setting.
Which leads me to the conclusion that the signal for 4:2:2 12bits in fact has only 8bits instead of 12bits as shown in the info. 
No, it would report 10-bit 4:2:0 as 10-bit (or 30-bit) because as per HDMI 2.0 specs, >8-bit 4:2:0 is Deep Color pixel encoding and will therefore use the color depth bit in HDMI GCP.

If you are seeing banding on your display with 4:2:2 input, then it suggests that your display is not processing the 4:2:2 signal correctly. Have you tried with a different device that can output 10/12-bit 4:2:2?
Pages: 1 2