# HG changeset patch # User michael # Date 1156418321 0 # Node ID 2707905787112377c7abdb11ce9cc1ffc74f10f3 # Parent 7963ceb9308387abffb73c2607c9a28be83105d0 avoid a few if(x==0) checks in the inner loops diff -r 7963ceb93083 -r 270790578711 mpegaudiodec.c --- 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;iscale_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;iscale_factors[j++] = get_bits(&s->gb, slen1); + }else{ + for(i=0;iscale_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;iscale_factors[j++] = get_bitsz(&s->gb, slen); + if(slen){ + for(i=0;iscale_factors[j++] = get_bits(&s->gb, slen); + }else{ + for(i=0;iscale_factors[j++] = 0; + } } else { /* simply copy from last granule */ for(i=0;iscale_factors[j++] = get_bitsz(&s->gb, sl); + if(s1){ + for(i=0;iscale_factors[j++] = get_bits(&s->gb, sl); + }else{ + for(i=0;iscale_factors[j++] = 0; + } } /* XXX: should compute exact size */ for(;j<40;j++)