Hi,
We are developing a video player that renders to a GL_TEXTURE_EXTERNAL_OES texture. I seems that the colour of the video is slightly wrong on our Galaxy S8 test device. (in fact the colour of this video seems wrong in any built in or 3rd party video player apps on this device) On every other device in our possession the colour seems fine. My guess would be (after a LOT of fiddling with the colorspaces etc) that maybe the internal YUV -> RGB conversion could be guilty? If that's the case, could there be any workaround? (right now I'm trying to write our own conversion, but I'm afraid that wouldn't be ideal considering all the possible YUV output formats http://bigflake.com/mediacodec/ - see "Q5")
Here is the video:
Here is the first frame exported in photoshop:
And here is screenshot from the built in video player from the device:
If you look carefully, you can see, that colour of the grass is a little off.
Thanks,
Peter
It turns out that this kind ofcolor space information wasn't specified in the video (just said yuv420p), so I tried to convert it to BT.601* and BT.709 as well. Unfortunately both gave the same output as the original. (weird?)
About those conversions... Still not an expert over here :D After some googling I've found this: https://www.mathworks.com/matlabcentral/fileexchange/36417-yuv-files-reading-and-converting?focused=5229495&tab=function&requestedDomain=www.mathworks.com Are these the droirds.. ahem matrices I am looking for?
Ok so, I got the conversions working for both formats, now I just can't determine when to use which one. Is there any way to find out which conversion OpenGL is using internally with samplerExternalOES textures?