[MPlayer-users] Screenshot color wrong

Polyphem polyphem at gmail.com
Mon Sep 7 17:11:14 EEST 2020


I did some further testing. Desiered output imho would be Red-255 both 
on screen an screenshot.

I used this PNG test-picture with a Red-255 block as reference (most 
right-hand 20px block on middle color band)
https://drive.google.com/file/d/1jI7pa7LekmHSo1IB8Ja16ypkdRCQssrA/view?usp=sharing

as background picture to create this test.mp4
https://drive.google.com/file/d/1qpbngZ441S64QA_ziM2h5O06q5RZrNOC/view?usp=sharing

with following settings:

H.264/AVC
Color Profile >
YUV Format: 4:2:0
Color Range: Compressed (16-235)
Color Depth: 8 Bit
Color Space: Automatic (ITU-R BT.709)

then tested following player/driver combos and took red value of the 
reference block with on-screen color picker:


mplayer.exe -vo direct3d -vf screenshot test.mp4
 > On-Screen = Red-255
 > Screenshot = Red-232

mplayer.exe -vo gl -vf screenshot test.mp4
 > On-Screen = Red-232
 > Screenshot = Red-232

vlc.exe with opengl output driver
 > On-Screen = Red-255
 > Screenshot = Red-232

mpv --vo=gpu test.mp4
 > On-Screen = Red-254 - Red-255
 > Screenshot = Red-255

mpv.com --vo=gpu --vf=format=colorlevels=limited test.mp4
 > On-Screen = Red-255
 > Screenshot = Red-255

mpv.com --vo=gpu --vf=format=colorlevels=full test.mp4
 > On-Screen = Red-240
 > Screenshot = Red-255

https://mpv.io/manual/stable/#video-filters-%3Ccolorlevels%3E
Available color ranges are:
auto:    automatic selection (normally limited range) (default)
limited:    limited range (16-235 for luma, 16-240 for chroma)
full:    full range (0-255 for both luma and chroma)

PotPlayer (Windows) with OpenGl output driver
 > On-Screen = Red-255
 > Screenshot = Red-255

Windows Media Player
 > On-Screen = Red-255




Additional readings found:

https://kodi.wiki/view/Video_levels_and_color_space
"When attempting to play limited TV video content on a PC that uses Full 
video levels (such is an HTPC), we can get undesirable results if we set 
our video levels incorrectly -- such as complete loss of shadow detail 
(aka crushed blacks) or conversely really washed out colors."

"YCbCr to RGB color conversion"
https://fiveko.com/tutorials/image-processing/color-space-conversion/

"Input is limited range, I want to output full range"
https://superuser.com/questions/1405177/ffmpeg-how-to-handle-color-range-conversions





It seems as some players do and some don't perform a "YCbCr to RGB" 
conversion for movies with limited / compressed color range (16-235) for 
either screen or screenshot.

It would be great to have scale filter for screenshot (and maybe gl 
driver) to perform such a "YCbCr to RGB".

MPlayer colors on screen (with gl) and screenshot are of for me. 
Compared to source videos with full color range the difference is 
visilbe as a red-shift for gl, no difference visible with vo=direct3d.

Somehow "levelconv" param for gl sounds like the right switch, but 
changing it's value does not change output in any way.

Are there other linux media players to benchmark here?

Best Regards


More information about the MPlayer-users mailing list