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

Reimar Döffinger Reimar.Doeffinger
Wed Jul 1 12:59:02 CEST 2009


On Wed, Jul 01, 2009 at 12:52:08PM +0200, Jimmy Christensen wrote:
> I modified for the purpose I need it for. Converting from half-float to 
> unsigned int.
> 
> uint16_t av_halflt2uint(uint16_t v){
>       uint16_t nosign = v+v;
>       if (v>>15)
>           return 0; // negatives are not interesting so clamp it to 0
>       if (nosign >= 0xfc00)
>           return 65535; // Anything above 1 should be clamped to 65535
>       if (nosign < 0x0200)
>           return ldexp((v&0x3ff), 1-25)*65535; // denormal or 0
>       return ldexp((v&0x3ff) + (1<<10), (v>>10&0x1f)-25)*65535;
> }

That function is useless for any other use.
In addition, I really half to say that this is a very "half-assed" way
to optimize it.
There is no need for the extremely slow ldexp function etc. if you want
to convert to int anyway, and denormals will always end up as 0 anyway.
I'd appreciate if you'd take it seriously when I say there is _no point_
in optimizing it before you know what exactly you need. That means in
particular that the code where you use it has passed at least a first
review.



More information about the ffmpeg-devel mailing list