Optimize ctx calculation in decode_cabac_mb_mvd(), code by dark shikari.
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 19 Dec 2008 00:05:39 +0000 (00:05 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 19 Dec 2008 00:05:39 +0000 (00:05 +0000)
The case for 16x16 blocks becomes 10 cpu cycles faster on pentium dual,
i could not find a speed difference in the case of subblocks though.

Originally committed as revision 16226 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264.c

index 7d14d04fe90826d8ed074d044be68209b90b0f80..3e19c97c602d17e8a1abef1fa8af038e30ae4edc 100644 (file)
@@ -5039,14 +5039,8 @@ static int decode_cabac_mb_mvd( H264Context *h, int list, int n, int l ) {
     int amvd = abs( h->mvd_cache[list][scan8[n] - 1][l] ) +
                abs( h->mvd_cache[list][scan8[n] - 8][l] );
     int ctxbase = (l == 0) ? 40 : 47;
-    int ctx, mvd;
-
-    if( amvd < 3 )
-        ctx = 0;
-    else if( amvd > 32 )
-        ctx = 2;
-    else
-        ctx = 1;
+    int mvd;
+    int ctx = (amvd>2) + (amvd>32);
 
     if(!get_cabac(&h->cabac, &h->cabac_state[ctxbase+ctx]))
         return 0;