# HG changeset patch # User serge # Date 1242804369 0 # Node ID f39076e0d6058de22aa6a3c4f6ea2b35ecd13c70 # Parent 2e84b386a8b68814f1be6bef958b11efa3e429df Use iMDCT output scaling to simplify ffvorbis and make it slightly faster. diff -r 2e84b386a8b6 -r f39076e0d605 vorbis_dec.c --- a/vorbis_dec.c Wed May 20 07:24:38 2009 +0000 +++ b/vorbis_dec.c Wed May 20 07:26:09 2009 +0000 @@ -210,11 +210,6 @@ av_free(vc->mappings[i].mux); } av_freep(&vc->mappings); - - if(vc->exp_bias){ - av_freep(&vc->win[0]); - av_freep(&vc->win[1]); - } } // Parse setup header ------------------------------------------------- @@ -876,16 +871,6 @@ vc->win[0]=ff_vorbis_vwin[bl0-6]; vc->win[1]=ff_vorbis_vwin[bl1-6]; - if(vc->exp_bias){ - int i, j; - for(j=0; j<2; j++){ - float *win = av_malloc(vc->blocksize[j]/2 * sizeof(float)); - for(i=0; iblocksize[j]/2; i++) - win[i] = vc->win[j][i] * (1<<15); - vc->win[j] = win; - } - } - if ((get_bits1(gb)) == 0) { av_log(vc->avccontext, AV_LOG_ERROR, " Vorbis id header packet corrupt (framing flag not set). \n"); return 2; @@ -896,8 +881,8 @@ vc->saved = av_mallocz((vc->blocksize[1]/4)*vc->audio_channels * sizeof(float)); vc->previous_window=0; - ff_mdct_init(&vc->mdct[0], bl0, 1, -1.0); - ff_mdct_init(&vc->mdct[1], bl1, 1, -1.0); + ff_mdct_init(&vc->mdct[0], bl0, 1, vc->exp_bias ? -(1<<15) : -1.0); + ff_mdct_init(&vc->mdct[1], bl1, 1, vc->exp_bias ? -(1<<15) : -1.0); AV_DEBUG(" vorbis version %d \n audio_channels %d \n audio_samplerate %d \n bitrate_max %d \n bitrate_nom %d \n bitrate_min %d \n blk_0 %d blk_1 %d \n ", vc->version, vc->audio_channels, vc->audio_samplerate, vc->bitrate_maximum, vc->bitrate_nominal, vc->bitrate_minimum, vc->blocksize[0], vc->blocksize[1]); @@ -1410,8 +1395,7 @@ { int i; if(exp_bias) { - for(i=0; i