comparison h264.c @ 7444:a9da32d66fec libavcodec

Small h264 decoding speed optimization: while->do/while
author darkshikari
date Mon, 28 Jul 2008 15:42:49 +0000
parents 69766900be2d
children a202753ce99d
comparison
equal deleted inserted replaced
7443:a8b985890c34 7444:a9da32d66fec
5354 assert( cat == 1 || cat == 2 ); 5354 assert( cat == 1 || cat == 2 );
5355 h->non_zero_count_cache[scan8[n]] = coeff_count; 5355 h->non_zero_count_cache[scan8[n]] = coeff_count;
5356 } 5356 }
5357 } 5357 }
5358 5358
5359 while( coeff_count-- ) { 5359 do {
5360 uint8_t *ctx = coeff_abs_level1_ctx[node_ctx] + abs_level_m1_ctx_base; 5360 uint8_t *ctx = coeff_abs_level1_ctx[node_ctx] + abs_level_m1_ctx_base;
5361 5361
5362 int j= scantable[index[coeff_count]]; 5362 int j= scantable[index[--coeff_count]];
5363 5363
5364 if( get_cabac( CC, ctx ) == 0 ) { 5364 if( get_cabac( CC, ctx ) == 0 ) {
5365 node_ctx = coeff_abs_level_transition[0][node_ctx]; 5365 node_ctx = coeff_abs_level_transition[0][node_ctx];
5366 if( is_dc ) { 5366 if( is_dc ) {
5367 block[j] = get_cabac_bypass_sign( CC, -1); 5367 block[j] = get_cabac_bypass_sign( CC, -1);
5394 block[j] = get_cabac_bypass_sign( CC, -coeff_abs ); 5394 block[j] = get_cabac_bypass_sign( CC, -coeff_abs );
5395 }else{ 5395 }else{
5396 block[j] = (get_cabac_bypass_sign( CC, -coeff_abs ) * qmul[j] + 32) >> 6; 5396 block[j] = (get_cabac_bypass_sign( CC, -coeff_abs ) * qmul[j] + 32) >> 6;
5397 } 5397 }
5398 } 5398 }
5399 } 5399 } while( coeff_count );
5400 #ifdef CABAC_ON_STACK 5400 #ifdef CABAC_ON_STACK
5401 h->cabac.range = cc.range ; 5401 h->cabac.range = cc.range ;
5402 h->cabac.low = cc.low ; 5402 h->cabac.low = cc.low ;
5403 h->cabac.bytestream= cc.bytestream; 5403 h->cabac.bytestream= cc.bytestream;
5404 #endif 5404 #endif