2015-02-19, 00:16
@fritsch - o.k., so I think I've got it... The key being this sentence: "By default XBMC takes the original 16-235 levels and expands them to 0-255."
So xbmc assumes that input video files have preserved the 16-235 range from the original source material, and by default scales this to 1-255, which is then either re/de-scaled to 16-235 (Limited) for output to a t.v. or left alone (Full) for output to a monitor. So when viewing on a monitor, you're stuck with either banding (if you expand) or incorrect levels (if you don't).
Two things that still confuse me: 1) if I play that full-range grayscale ramp video with all scaling turned off ("Limited" kodi / "Full" xrandr), the ramp is smooth, but the range is clearly smaller than the same file played in the stock ubuntu Videos application, which displays a deeper black / brighter white. Does this indicate that all/most video players are assuming a 16-235 range for .mp4 content, and scaling accordingly?
2) is this a valid assumption to begin with? I would think that it would make more sense for the ripping/encoding application to apply the scaling (along with dithering to clean up the banding) itself, given that 16-235 is really a broadcast thing... or at least that there would be info embedded in the files indicating the correct range, and that kodi / other video apps would read this, rather than assuming anything.
So xbmc assumes that input video files have preserved the 16-235 range from the original source material, and by default scales this to 1-255, which is then either re/de-scaled to 16-235 (Limited) for output to a t.v. or left alone (Full) for output to a monitor. So when viewing on a monitor, you're stuck with either banding (if you expand) or incorrect levels (if you don't).
Two things that still confuse me: 1) if I play that full-range grayscale ramp video with all scaling turned off ("Limited" kodi / "Full" xrandr), the ramp is smooth, but the range is clearly smaller than the same file played in the stock ubuntu Videos application, which displays a deeper black / brighter white. Does this indicate that all/most video players are assuming a 16-235 range for .mp4 content, and scaling accordingly?
2) is this a valid assumption to begin with? I would think that it would make more sense for the ripping/encoding application to apply the scaling (along with dithering to clean up the banding) itself, given that 16-235 is really a broadcast thing... or at least that there would be info embedded in the files indicating the correct range, and that kodi / other video apps would read this, rather than assuming anything.