Commit 3532a87a authored by Michael Niedermayer's avatar Michael Niedermayer

exr: optimize exr_halflt2uint()

30% faster
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent cabc0ac7
...@@ -77,15 +77,13 @@ static inline uint16_t exr_flt2uint(uint32_t v) ...@@ -77,15 +77,13 @@ static inline uint16_t exr_flt2uint(uint32_t v)
*/ */
static inline uint16_t exr_halflt2uint(uint16_t v) static inline uint16_t exr_halflt2uint(uint16_t v)
{ {
int exp = v >> 10; unsigned exp = 14 - (v >> 10);
if (v & 0x8000) if (exp >= 14) {
return 0; if (exp == 14) return (v >> 9) & 1;
if (!exp) else return (v & 0x8000) ? 0 : 0xffff;
return (v >> 9) & 1; }
if (exp >= 15)
return 0xffff;
v <<= 6; v <<= 6;
return (v + (1 << 16)) >> (15 - exp); return (v + (1 << 16)) >> (exp + 1);
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment