Kodi Community Forum

Full Version: Nvidia Shield - Worse image quality
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11
This is a heavily discussed topic on Nvidia forums and I don't know, if KODI can solve this problem or not.

These are the issues that are going to be discussed:

- Bad black and white levels
- graining and distortion in media
- artifacts on low light situations

Threads and also pictures can be found here:
https://forums.geforce.com/default/topic...valuation/
https://forums.geforce.com/default/topic...aluation-/
https://forums.geforce.com/default/topic...cceptable/

Maybe a Dev can bring some light into the dark. Nvidia did not post only one comment on this officially and it sometimes really a worse image quality.

Someone at the forum with experiences like this and/ or maybe with solutions?
We have no control at all with the "mediacodec(surface)" codec. You can try with disabling the surface one and keep the "plain" mediacodec.
At least then, kodi has some control on rendering.
What I currently see in the code is, that the output from decoder happens in YUV420P, that means - that NV12 can be transported lossless, but everything else with more bits cannot. So - if you use certain samples for testing the quality, use NV12 based ones (all of them should be in that format normally). Second - as koying said: I currently don't see at all where Mediacodec does things like BT709 / BT601 conversions. We do that in our EGL path, though.

Do you see a difference when you disable surface rendering? Though - kodi will render in FullRange if not told otherwise, full range RGB that is - depending on your TV output setting / format - that will introduce further issues. You can influence that (at least I hope so, as that is what we use on X11/EGL) with the "Use Limited Range" setting in kodi's gui.
Hi, I believe Shield only outputs RGB limited, and from what I have read most people that suffer from washed out blacks are suffering it in all video apps not just Kodi, maybe datranquil can give more info here.

I have never seen that "Use Limited Range" setting though, it appears it doesn't exist on android versions.

As for the mediacodec(surface) it makes sense to me, the video patterns I use from the OP links look exactly the same when using that vs the native player, it has plenty of issues but that is Nvidia's fault then.

As for the regular mediacodec while it looks better for me, the sharpness does look a bit worse than the other option (a bit blurrier), for me the only way to avoid the problems on the test patterns is to use Software decoding.
I also tried to compare this with a Fire TV, unfortunately the particular pattern I use for sharpness for some reason looks a bit squeezed on it (not other videos though) so it is harder to interpret or compare.

Anyway I am still not sure if this differences are something specific to my setup, I am still waiting confirmation on the first OP thread to see if anyone else see's the same as I.
(2016-01-12, 12:15)pedromvu Wrote: [ -> ]I have never seen that "Use Limited Range" setting though, it appears it doesn't exist on android versions.

Maybe that's the point of the color level topic. I also never saw this option on an android device, it seems to use full range all the time where many Tvs have problems with.
By side of all the test being made by other guys in the above linked topic, I will do some own tests today and will see how to improve the image quality.

Anyway, is there a way to force KODI using the limited range RGB values instead of full range? Advancedsettings.xml? Haven't found anything about that. :-(
First it needs to be implemented for GLES. That's not just a setting but also needs to be handled by gles rendering

Code:
bool CWinSystemBase::UseLimitedColor()
{
#if defined(HAS_GL) || defined(HAS_DX)
  static CSettingBool* setting = (CSettingBool*)CSettings::GetInstance().GetSetting(CSettings::SETTING_VIDEOSCREEN_LIMITEDRANGE);
  return setting->GetValue();
#else
  return false;
#endif
}
(2016-01-12, 11:42)fritsch Wrote: [ -> ]You can influence that (at least I hope so, as that is what we use on X11/EGL) with the "Use Limited Range" setting in kodi's gui.

As above, not an option currently appearing in Android, I made that setting in my TV instead.

Image
Maybe it is a feature which can be introduced with 17?
I think there are many Tvs out there, where it is not possible to select the color space.
As said by @FernetMenta: it is not implemented. Also it won't influence Surface rendering at all.
Also keep in mind. This setting can only at all make sense when the driver is acting in "Full Range". When the driver acts in "Limited Range" and scales the content itself it won't work at all, it will harm and break colors even more. So for now we also only don't know what the decoder outputs. If the Yuv420p data is already "broken" no post processing will help you at all.

We had great pain in VAAPI to get that working correctly and here we have had the full sourcecode of everything. So never the less. With this setting not only video content needs to be touched, but also pictures.

To test: Display a Full Range RGB image with an android picture viewer (one that does not scale the colors -> kodi's viewer for example). When you see 0 to 16 and you see 235 to 255 steps - then the display driver itself is doing clamping already - when this happens we don't need to even start.
Hi,
I don't know if it's because kodi comes from PC world and as full range is only used for PC monitor, but on TV we have to use limited range, and as Bluray disc are in limited range, it will be better to avoid unnecessary convertions Wink
Thanks for all your kind replies.

ATM shield is operating in full range RGB, that is what someone states on nvidia forums. I dont know how I can check this. My AVR keeps saying "8 Bit Input, 8 Bit Output" so I assume it is full range?

There is an update announced for the shield, which should be released this week. (Update to Marshmallow as well) Maybe it is possible to reduce the used colorspace on OS level then.
Currently it's not a kodi issue at all. We can output whatever user wants be it limited range or full range. Currently with the surface render _kodi_ does not touch anything at all - so the mess you have on screen comes from MediaCodec not kodi. You see that every mediaplayer on android has this issue.
(2016-01-12, 14:21)datranquil Wrote: [ -> ]Thanks for all your kind replies.

ATM shield is operating in full range RGB, that is what someone states on nvidia forums. I dont know how I can check this. My AVR keeps saying "8 Bit Input, 8 Bit Output" so I assume it is full range?

There is an update announced for the shield, which should be released this week. (Update to Marshmallow as well) Maybe it is possible to reduce the used colorspace on OS level then.

If that is the case and mediacodec outputs limited Range - then this one here: should be gray for you, is this correct:

This should be gray for you: https://dl.dropboxusercontent.com/u/5572...k-nv12.mkv
This should be black for you: https://dl.dropboxusercontent.com/u/5572...444-sw.mkv

Edit: If both are blacks - then your TV is Limited Range but color output is full range :-)

To make it more clear: If android really forces Full Range and the TV reads this infoframe and sets itself also to Full Range - the above will be gray (the first one). If the TV ignores the full range infoframe and runs in Limited: both files will be the same black.

Which blacks do you see here:
Image

Which white does not get more "white"? Which black value can you still see blacker than the value one step lighter:
Image
Here we go. (native picture viewer first)

Black Levels Picture:

0 -> Black
1 -> Grey (brighter then 0 for sure)
2 -> more dark then 1 (my girlfriend confirmed that, its slightly darker then 1)
3 -> Brighter then 2
4 -> again, darker then 3 (same as 2, only a bit or maybe the same)
5 -> Brighter then 4
6 -> Slightly darker then 5 (nearly not noticeable)
7 -> Brighter then 6
8 -> Brighter then 7
9 -> Brighter then 8
10 -> Brighter then 9

Grey values:
Image
Full Size Image: http://postimg.org/image/mz4nb8oy5/

black-nv12.mkv is not playable for me. Eigther on my PC or on my shield device. :-(
Pages: 1 2 3 4 5 6 7 8 9 10 11