From f21fb76b1be18036c93c3e29fe1889a9fabf30b3 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 21 Jun 2011 16:14:19 -0400 Subject: ac3enc: remove a branch in asym_quant() by doing 2 shifts --- libavcodec/ac3enc.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'libavcodec/ac3enc.c') diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index 1db69414a5..db45c8360e 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -1123,15 +1123,9 @@ static inline int sym_quant(int c, int e, int levels) */ static inline int asym_quant(int c, int e, int qbits) { - int lshift, m, v; + int m, v; - lshift = e + qbits - 24; - if (lshift >= 0) - v = c << lshift; - else - v = c >> (-lshift); - /* rounding */ - v = (v + 1) >> 1; + v = (((c << e) >> (24 - qbits)) + 1) >> 1; m = (1 << (qbits-1)); if (v >= m) v = m - 1; -- cgit v1.2.3