exr: optimize exr_halflt2uint()

30% faster

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-04-09 20:55:09 +02:00
parent cabc0ac72f
commit 3532a87a25
1 changed files with 6 additions and 8 deletions

View File

@ -77,15 +77,13 @@ static inline uint16_t exr_flt2uint(uint32_t v)
*/
static inline uint16_t exr_halflt2uint(uint16_t v)
{
int exp = v >> 10;
if (v & 0x8000)
return 0;
if (!exp)
return (v >> 9) & 1;
if (exp >= 15)
return 0xffff;
unsigned exp = 14 - (v >> 10);
if (exp >= 14) {
if (exp == 14) return (v >> 9) & 1;
else return (v & 0x8000) ? 0 : 0xffff;
}
v <<= 6;
return (v + (1 << 16)) >> (15 - exp);
return (v + (1 << 16)) >> (exp + 1);
}
/**