dnxhddec: avoid a branch in 10-bit decode_dct_block()
authorMans Rullgard <mans@mansr.com>
Thu, 21 Jul 2011 23:13:27 +0000 (00:13 +0100)
committerMans Rullgard <mans@mansr.com>
Fri, 22 Jul 2011 22:39:31 +0000 (23:39 +0100)
The minimum weight value is 32 so this test can be skipped for the
10-bit case.  Overall speedup 3-4%.

Signed-off-by: Mans Rullgard <mans@mansr.com>
libavcodec/dnxhddec.c

index 426be2e..63ccd08 100644 (file)
@@ -239,7 +239,7 @@ static av_always_inline void dnxhd_decode_dct_block(DNXHDContext *ctx,
         //av_log(ctx->avctx, AV_LOG_DEBUG, "j %d\n", j);
         //av_log(ctx->avctx, AV_LOG_DEBUG, "level %d, weight %d\n", level, weight_matrix[i]);
         level = (2*level+1) * qscale * weight_matrix[i];
         //av_log(ctx->avctx, AV_LOG_DEBUG, "j %d\n", j);
         //av_log(ctx->avctx, AV_LOG_DEBUG, "level %d, weight %d\n", level, weight_matrix[i]);
         level = (2*level+1) * qscale * weight_matrix[i];
-        if (weight_matrix[i] != level_bias)
+        if (level_bias < 32 || weight_matrix[i] != level_bias)
             level += level_bias;
         level >>= level_shift;
 
             level += level_bias;
         level >>= level_shift;