Mercurial > libavcodec.hg
changeset 3616:270790578711 libavcodec
avoid a few if(x==0) checks in the inner loops
author | michael |
---|---|
date | Thu, 24 Aug 2006 11:18:41 +0000 |
parents | 7963ceb93083 |
children | b2a5e44cf957 |
files | mpegaudiodec.c |
diffstat | 1 files changed, 30 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mpegaudiodec.c Thu Aug 24 09:24:50 2006 +0000 +++ b/mpegaudiodec.c Thu Aug 24 11:18:41 2006 +0000 @@ -2299,12 +2299,22 @@ if (g->block_type == 2) { n = g->switch_point ? 17 : 18; j = 0; - for(i=0;i<n;i++) - g->scale_factors[j++] = get_bitsz(&s->gb, slen1); - for(i=0;i<18;i++) - g->scale_factors[j++] = get_bitsz(&s->gb, slen2); - for(i=0;i<3;i++) - g->scale_factors[j++] = 0; + if(slen1){ + for(i=0;i<n;i++) + g->scale_factors[j++] = get_bits(&s->gb, slen1); + }else{ + for(i=0;i<n;i++) + g->scale_factors[j++] = 0; + } + if(slen2){ + for(i=0;i<18;i++) + g->scale_factors[j++] = get_bits(&s->gb, slen2); + for(i=0;i<3;i++) + g->scale_factors[j++] = 0; + }else{ + for(i=0;i<21;i++) + g->scale_factors[j++] = 0; + } } else { sc = granules[ch][0].scale_factors; j = 0; @@ -2312,8 +2322,13 @@ n = (k == 0 ? 6 : 5); if ((g->scfsi & (0x8 >> k)) == 0) { slen = (k < 2) ? slen1 : slen2; - for(i=0;i<n;i++) - g->scale_factors[j++] = get_bitsz(&s->gb, slen); + if(slen){ + for(i=0;i<n;i++) + g->scale_factors[j++] = get_bits(&s->gb, slen); + }else{ + for(i=0;i<n;i++) + g->scale_factors[j++] = 0; + } } else { /* simply copy from last granule */ for(i=0;i<n;i++) { @@ -2375,8 +2390,13 @@ for(k=0;k<4;k++) { n = lsf_nsf_table[tindex2][tindex][k]; sl = slen[k]; - for(i=0;i<n;i++) - g->scale_factors[j++] = get_bitsz(&s->gb, sl); + if(s1){ + for(i=0;i<n;i++) + g->scale_factors[j++] = get_bits(&s->gb, sl); + }else{ + for(i=0;i<n;i++) + g->scale_factors[j++] = 0; + } } /* XXX: should compute exact size */ for(;j<40;j++)