Browse Source

exr: optimize exr_halflt2uint()

30% faster

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n0.11
Michael Niedermayer 14 years ago
parent
commit
3532a87a25
1 changed files with 6 additions and 8 deletions
  1. +6
    -8
      libavcodec/exr.c

+ 6
- 8
libavcodec/exr.c View File

@@ -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;
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; v <<= 6;
return (v + (1 << 16)) >> (15 - exp);
return (v + (1 << 16)) >> (exp + 1);
} }


/** /**


Loading…
Cancel
Save