]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Small h264 decoding speed optimization: while->do/while
authordarkshikari <darkshikari@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 28 Jul 2008 15:42:49 +0000 (15:42 +0000)
committerdarkshikari <darkshikari@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Mon, 28 Jul 2008 15:42:49 +0000 (15:42 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@14459 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/h264.c

index 2c24787e4842caee6b1db1e904031184bc70427f..62bc05e2818ea0493858d0f29bdb4e1e8dfe4eb2 100644 (file)
@@ -5356,10 +5356,10 @@ static av_always_inline void decode_cabac_residual_internal( H264Context *h, DCT
         }
     }
 
-    while( coeff_count-- ) {
+    do {
         uint8_t *ctx = coeff_abs_level1_ctx[node_ctx] + abs_level_m1_ctx_base;
 
-        int j= scantable[index[coeff_count]];
+        int j= scantable[index[--coeff_count]];
 
         if( get_cabac( CC, ctx ) == 0 ) {
             node_ctx = coeff_abs_level_transition[0][node_ctx];
@@ -5396,7 +5396,7 @@ static av_always_inline void decode_cabac_residual_internal( H264Context *h, DCT
                 block[j] = (get_cabac_bypass_sign( CC, -coeff_abs ) * qmul[j] + 32) >> 6;
             }
         }
-    }
+    } while( coeff_count );
 #ifdef CABAC_ON_STACK
             h->cabac.range     = cc.range     ;
             h->cabac.low       = cc.low       ;