From 3532a87a25a8f034dabddfd00927611fc855669c Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 9 Apr 2012 20:55:09 +0200 Subject: [PATCH] exr: optimize exr_halflt2uint() 30% faster Signed-off-by: Michael Niedermayer --- libavcodec/exr.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libavcodec/exr.c b/libavcodec/exr.c index a37bebf27a..c8f2b9ad75 100644 --- a/libavcodec/exr.c +++ b/libavcodec/exr.c @@ -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); } /**