# HG changeset patch # User michael # Date 1098586776 0 # Node ID 2865f759882aacc467e857d0cd41cd4b124402ef # Parent fe25f849a169721e3cd3c1729d6b9a7965c44243 optimzation diff -r fe25f849a169 -r 2865f759882a h264.c --- a/h264.c Sun Oct 24 02:08:45 2004 +0000 +++ b/h264.c Sun Oct 24 02:59:36 2004 +0000 @@ -4118,8 +4118,7 @@ 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; - int mvd = 0; + int ctx, mvd; if( amvd < 3 ) ctx = 0; @@ -4128,11 +4127,14 @@ else ctx = 1; + if(!get_cabac(&h->cabac, &h->cabac_state[ctxbase+ctx])) + return 0; + + mvd= 1; + ctx= 3; while( mvd < 9 && get_cabac( &h->cabac, &h->cabac_state[ctxbase+ctx] ) ) { mvd++; - if( ctx < 3 ) - ctx = 3; - else if( ctx < 6 ) + if( ctx < 6 ) ctx++; } @@ -4147,12 +4149,10 @@ mvd += 1 << k; } } - if( mvd != 0 && get_cabac_bypass( &h->cabac ) ) - return -mvd; - return mvd; + if( get_cabac_bypass( &h->cabac ) ) return -mvd; + else return mvd; } - static int inline get_cabac_cbf_ctx( H264Context *h, int cat, int idx ) { int nza, nzb; int ctx = 0;