[FFmpeg-devel] [PATCH] Fast half-float to float conversion

Måns Rullgård mans
Tue Jun 30 10:57:25 CEST 2009


Jimmy Christensen <jimmy at ghost.dk> writes:

> On 2009-06-30 10:01, M?ns Rullg?rd wrote:
>> Jimmy Christensen<jimmy at ghost.dk>  writes:
>>
>>> Hi,
>>>
>>> I'm almost done with my OpenEXR decoder, but since it can work in a
>>> half-float format I wanted a fast half-float to float conversion. I
>>> found one in the FOX toolkit which uses a table lookup. I didn't want
>>> the table lookup in the OpenEXR decoder only, since a few other
>>> formats can use half-floats aswell. So instead I submit the half-float
>>> to float first as a libavutil header.
>>
>> ARM NEON has hardware support for half-precision floating point.  This
>> conversion should be done in a way that allows using such CPU-specific
>> functionality.
>>
>
> I don't have access to any ARM NEON processors. How should I proceed
> with this?

Make the function convert an array instead of single values, and put
some macros or something in place so it can be overridden by
cpu-specific code.  See bswap.h or mathops.h for examples.

>>> The code is derivative work from the FOX toolkit, but I have already
>>> asked permission to include it in the ffmpeg project, granted that I
>>> stated origin and a link to the paper describing the table lookup. The
>>> paper can be seen here :
>>>
>>> http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf
>>>
>>> I have tested the code with the before mentioned OpenEXR decoder and
>>> it works as expected with half floats.
>>
>> Those tables look trivial enough that I have a hard time seeing how
>> they could be covered by copyright at all.  It's just a simple
>> rescaling.
>
> Hehe. Was just a simple copy/paste from a previous header :) Will
> remove the copyright. I just asked for permission of pure politeness.

Is it copied from someone else's code?  If so, placing your name in
the copyright header is wrong.  What copyright statement, if any, was
on the original?

It is also debatable whether we need the conversion to support
denormal numbers.  I doubt these will occur in image data.  If this is
not required, simple arithmetic conversion of exponent and mantissa is
probably faster than table lookup.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list