[FFmpeg-devel] [RFC] FFV1 float support

Lynne dev at lynne.ee
Thu Mar 6 04:14:49 EET 2025


On 06/03/2025 01:15, Michael Niedermayer wrote:
> Hi everyone
> 
> Current FFv1 code with my patchset supports 16bit floats. The implementation
> is quite simple. Which is good
> 
> I have tried improving compression, the gains are incremental, but its not
> large overall. For example 44% space gain on the remapping table is just
> 0.1% overall.
> 
> I have few float samples. Its mainly one high quality slideshow of unrelated
> 16bit float images. These excercise a wide range fo things including negative
> color values.
> I think I have only one single (non slideshow) video of float 16 samples,
> 
> It turns out the most efficient way to store floats that i found, is to remap
> them to integers. Not to store tham as sign, exponent, mantisse, i tried that
> for many hours.
> 
> Storing them using a remapping, has a very nice side effect though, and that is
> it will be easy to add 32bit and 64bit float support (once there is some
> sample data)
> Because a image of 64bit floats, after its split into slices of up to 256x256
> can always be mapped into 16bit integers within each slice.

*how*? Unlike ints, you cannot simply shift and extract bits from floats 
and treat them as floats.

> What about the mapping itself, it uses a rather simple rle coder. ive spend
> most of the day today tuning that and failing to really beat that.
> Using context from the previous image didnt work with the slideshow material
> i have nor that one video i have. I tried using sign and exponent as context,
> tried previous run, relations of runs, low bits and many more, but no or
> insignificant improvments of yesterdays implementation was achieved.

I did mention this once before, but you should look into the Daala/Opus 
way of storing rawbits into a separate chunk at the end of the 
bitstream. It avoids polluting the range context with equiprobable bits.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xA2FEA5F03F034464.asc
Type: application/pgp-keys
Size: 624 bytes
Desc: OpenPGP public key
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20250306/ed67e57a/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 236 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20250306/ed67e57a/attachment.sig>


More information about the ffmpeg-devel mailing list