Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
I hope your fight has helped ... for the next gen atoms ...
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
So the TV should switch modes the moment you start a video?
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 1,771
Joined: May 2015
Reputation:
73
wesk05
Posting Freak
Posts: 1,771
I cannot say what is happening internally, but what comes out of Amlogic S905 only has 8-bit color depth. The Shield does output 10-bit color, but I really don't know how to verify whether it is untouched native 10-bit or has undergone conversions.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
Does the shield _always_ output 10 bit? or do you see that something changes in the info frames the very moment it starts playback?
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
2016-04-13, 23:25
(This post was last modified: 2016-04-13, 23:25 by fritsch.)
1) So - what happens if you play 1080 hevc 10 bit content?
2) And what happens if you play 4k@60p standard NV12 content?
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
2016-04-13, 23:36
(This post was last modified: 2016-04-13, 23:40 by fritsch.)
Yeah - that's what I said above :-) Not sure how you imagine a fancy "overlay" ... it needs to end somewhere on screen and if the mode is an 8 bit mode ... bad for you. If it always outputs 10 bits, something needs to be done to the standard 8 bit data - most likely some dithering algorithms, but - as we don't do it ... someone else does it actively without any control by us (especially on android with surface rendering).
On AMLogic it is simply decoding and then most likely postprocessing / clamping / scaling depending on the actual output mode ... all done in the nice blackbox that you control via a sysfs file.
So an "intelligent solution" could be:
if output_mode == 10 bit && overlay has 10 bit content -> dithering all stuff but not the overlay -> output.
else if output_mode == 8 bit && overlay has 10 bit content -> scale to 8 bit -> output
Add some limited range to the supper, remember that you don't have any influence on what you are doing (besides on Android going the GLES way) ... not good at all. But marketing seems to work - and nothing else.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
I am fed up with that 10 bit stuff before it even started :-) When I look at the mess with 8 bit limited vs full vs rgb and then think of even more tuning with:
display driver 8bit / 10 bit / some mixture / native dithering?
decoder: Can one get the decoded NV12 / 10 bit P010 data and work with it?
rendering (kodi): Do we know what the driver does (e.g. clamping, scaling by its own, which mode it is running)
And: How can a simple user configure all that stuff magically :-)
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 23,370
Joined: Aug 2011
Reputation:
1,088
fritsch
Team-Kodi Developer
Posts: 23,370
2016-04-13, 23:56
(This post was last modified: 2016-04-14, 00:01 by fritsch.)
It does several things - but _it depends_
For kodi's gui output (leave video alone for now) it scales 0..255 to 16..235. This applies directly to the PictureViewer and everything that is rendered by kodi (leave video alone).
Now video comes into play. Here that setting hooks into the decoder (e.g. VDPAU, VAAPI, DXVA check this setting) and when ticked VDPAU uses it's studio color mixer to adjust the colors to be limited. On VAAPI it controls the rendering. We get NV12 data directly after decoding without being touched (alternatively after doing the vpp chain like deinterlacing) again everything still valid Limited Range. From here the Shaders in the render are controled.
If setting is enabled: -> direct output
if setting is disabled: Apply Dithering, upscale to 0 .. 255 and output
So - it's quite transparent what kodi does ... but don't underestimate the display drivers which can fuckup our nice chain quite hard :-)
Edit: No effect for video output on AMLogic (Bypass, it does what it wants to do), on Android no effect if surface rendering is done. No effect in the decoder on IMX. But also used in GLES path, if you use that one for rendering.
Edit2: So in short, kodi needs a cooperating display driver, which kodi does not control, but user needs to properly setup.
Good example:
User set full range for display driver, kodi use limited range not set, dithering 8 bit set <- suggested on PC monitor
User set limited range _without_ touching video data, kodi use limited range set <- suggested on TVs, take great care the driver does not influence the values
Use set limited range _scaling the data from full to limited, kodi use limite range _not_ set, dithering 8 bit set <- scaled twice but should end up roughly at the same range again.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Posts: 1,771
Joined: May 2015
Reputation:
73
wesk05
Posting Freak
Posts: 1,771
2016-04-14, 00:08
(This post was last modified: 2016-04-14, 00:10 by wesk05.)
So, the video level is set to 16-235, but not clamped when the limited range option is enabled in Kodi? BTB and WTW from NV12 is passed only when the display driver is set to full and limited range option is enabled in Kodi. In all other combinations, the levels are clamped to 16-235 for NV12.