ilia3101 / MLV-App

All in one MLV processing app.
https://mlv.app/
GNU General Public License v3.0
285 stars 30 forks source link

Possible or not? (macOS colour management) #134

Closed ilia3101 closed 5 years ago

ilia3101 commented 5 years ago

Using mostly Linux recently, I have come to appreciate the fact that maybe Apple is correct when they say macOS is the "most advanced operating system". Main thing that convinced me: it is possible in macOS to say what colour space a window is drawn in, and then the system will transform it to screen colour space for you. (I have been reading their documentation for fun)

So I was thinking... maybe there is a way to get the NSWindow pointer from Qt? Then through some objective C code set the colorSpace property to [NSColorSpace sRGBColorSpace]

Would be an easy way to have MLV App colour managed on macOS, and if not, we're kind of ok, as most macs have a really close to sRGB screen (except the new P3 ones) - of course this does not hold true over time and this would allow MLV App to respect calibration

bouncyball-git commented 5 years ago

What about using Open Color IO established standard (if possible to implement it into existing processing)? Displaying may be still a bit problematic but we always can calibrate our monitors.

masc4ii commented 5 years ago

I like your idea, but I am not sure if this is possible. We should have a look in the internet! We use QGraphicsView and QGraphicsScene to show the picture.

ilia3101 commented 5 years ago

What about using Open Color IO established standard (if possible to implement it into existing processing)? Displaying may be still a bit problematic but we always can calibrate our monitors.

How would this work, would Open Color IO convert the image according to monitor ICC profile to make it accurate?

bouncyball-git commented 5 years ago

As far as I remember the lib can do everything regarding converting any color space to any etc... not sure about details though.

Link

ilia3101 commented 5 years ago

https://github.com/qt/qtbase/commit/27f70d7826d739fe8705cb23b1a26cfb6e0bc16c

the backing store has had the sRGB profile assigned since commit ac899f6

We are good for now with sRGB on macOS, and i can confirm as it changes appearance when I switch profiles.

As far as I remember the lib can do everything regarding converting any color space to any etc... not sure about details though.

Link

It sounds really good and full of features, but I wonder if it will be quick or just slow things down a lot more if we use it for displaying.

bouncyball-git commented 5 years ago

but I wonder if it will be quick or just slow things down a lot more if we use it for displaying.

Have no Idea. We're not gonna know until we try it :)

Edit: however this lib have to be with optimized math.

masc4ii commented 5 years ago

Isn't this nearly what we would like to do? (here log to lin... but others shouldn't be so difficult) http://opencolorio.org/developers/api/OpenColorIO.html So we just need a wrapper, to be able to use C++ in processing modules. I did this for the denoiser - have a look if you're interested.

Edit: hmmm... but there are not many colorspaces availlable for these functions, see at the end of the page: http://opencolorio.org/developers/api/OpenColorTypes.html#ColorSpaceRcPtr

ilia3101 commented 5 years ago

I don't want to implement it yet, want to see how far we can take using simple matrix + transfer functions to convert colour spaces. Going to make processing be in ACES space, maybe we can use OCIO at the end of processing if it has good perceptual tranform ability 😉.

bouncyball-git commented 5 years ago

but there are not many colorspaces availlable for these functions, see at the end of the page

It seems they are some basic color space roles. Very interesting.

There are some interesting links:

ACES related: http://opencolorio.org/configurations/aces_1.0.3.html LUTs related: http://opencolorio.org/FAQ.html

ilia3101 commented 5 years ago

As it turned out Qt is sRGB on macOS anyway: https://github.com/ilia3101/MLV-App/issues/134#issuecomment-440080015, this issue may be closed