comparison h264.c @ 8386:102b197185d1 libavcodec

Faster CAVLC decoding of trailing_ones. Based on a patch by dark shikari. decode_residual is about 3.3% faster.
author michael
date Thu, 18 Dec 2008 16:11:19 +0000
parents af35581ac2ca
children 3e6e09814d0c
comparison
equal deleted inserted replaced
8385:af35581ac2ca 8386:102b197185d1
4085 4085
4086 trailing_ones= coeff_token&3; 4086 trailing_ones= coeff_token&3;
4087 tprintf(h->s.avctx, "trailing:%d, total:%d\n", trailing_ones, total_coeff); 4087 tprintf(h->s.avctx, "trailing:%d, total:%d\n", trailing_ones, total_coeff);
4088 assert(total_coeff<=16); 4088 assert(total_coeff<=16);
4089 4089
4090 for(i=0; i<trailing_ones; i++){ 4090 i = show_bits(gb, 3);
4091 level[i]= 1 - 2*get_bits1(gb); 4091 skip_bits(gb, trailing_ones);
4092 } 4092 level[0] = 1-((i&4)>>1);
4093 level[1] = 1-((i&2) );
4094 level[2] = 1-((i&1)<<1);
4093 4095
4094 if(trailing_ones<total_coeff) { 4096 if(trailing_ones<total_coeff) {
4095 int level_code, mask; 4097 int level_code, mask;
4096 int suffix_length = total_coeff > 10 && trailing_ones < 3; 4098 int suffix_length = total_coeff > 10 && trailing_ones < 3;
4097 int prefix= get_level_prefix(gb); 4099 int prefix= get_level_prefix(gb);