Mercurial > libavcodec.hg
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 |