dyne / frei0r

A large collection of free and portable video plugins
https://frei0r.dyne.org/
GNU General Public License v2.0
419 stars 91 forks source link

Add color model for 32b float #158

Open Cenobytes opened 1 year ago

Cenobytes commented 1 year ago

FFmpeg is using internally AV_PIX_FMT_GBRPF32 and AV_PIX_FMT_GBRAPF32 to handle 32b floating point pixel format. It should be interesting for high quality filtering to handle the second one, with a name like F0R_COLOR_MODEL_BGRAF32 = 3. Many professional tools like DaVinci Resolv use this kind of encoding internally. Moreover, the structure f0r_param_color_t is already using 32b float in [0, 1] range. The patches for both ffmpeg and frei0r is quite easy and less than 10 lines of code, unless I missed something...

jaromil commented 1 year ago

is there any filter we could port or implement, to have at least one working reference that uses this new colorspace?

Cenobytes commented 1 year ago

There are many advantages of using floats instead of 8b integers (and even 16b fixed point)

I didn't find a filter in frei0r focused on shadows processing (like in Gimp in Shadows-Highlights tool), but the levels filter should be an easy one to port. Unfortunately as it is linear it won't have much benefits. The curve should be more interesting but it is far more complex.