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