Mercurial > libavcodec.hg
changeset 7546:97383e012cb9 libavcodec
remove mdct tmp buffer
author | lorenm |
---|---|
date | Tue, 12 Aug 2008 00:36:36 +0000 |
parents | 2dca9201c400 |
children | 8226017a65ae |
files | ac3dec.c ac3dec.h atrac3.c cook.c dsputil.h fft-test.c i386/fft_3dn2.c i386/fft_sse.c mdct.c nellymoserdec.c vorbis_enc.c wma.h wmadec.c wmaenc.c |
diffstat | 14 files changed, 27 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/ac3dec.c Tue Aug 12 00:34:08 2008 +0000 +++ b/ac3dec.c Tue Aug 12 00:36:36 2008 +0000 @@ -605,7 +605,7 @@ } /* run standard IMDCT */ - s->imdct_256.fft.imdct_calc(&s->imdct_256, o_ptr, x, s->tmp_imdct); + s->imdct_256.fft.imdct_calc(&s->imdct_256, o_ptr, x); /* reverse the post-rotation & reordering from standard IMDCT */ for(k=0; k<32; k++) { @@ -643,7 +643,7 @@ do_imdct_256(s, ch); } else { s->imdct_512.fft.imdct_calc(&s->imdct_512, s->tmp_output, - s->transform_coeffs[ch], s->tmp_imdct); + s->transform_coeffs[ch]); } /* For the first half of the block, apply the window, add the delay from the previous block, and send to output */
--- a/ac3dec.h Tue Aug 12 00:34:08 2008 +0000 +++ b/ac3dec.h Tue Aug 12 00:36:36 2008 +0000 @@ -166,7 +166,6 @@ DECLARE_ALIGNED_16(float, delay[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]); ///< delay - added to the next block DECLARE_ALIGNED_16(float, window[AC3_BLOCK_SIZE]); ///< window coefficients DECLARE_ALIGNED_16(float, tmp_output[AC3_BLOCK_SIZE*2]); ///< temporary storage for output before windowing - DECLARE_ALIGNED_16(float, tmp_imdct[AC3_BLOCK_SIZE]); ///< temporary storage for imdct transform DECLARE_ALIGNED_16(float, output[AC3_MAX_CHANNELS][AC3_BLOCK_SIZE]); ///< output after imdct transform and windowing DECLARE_ALIGNED_16(short, int_output[AC3_MAX_CHANNELS-1][AC3_BLOCK_SIZE]); ///< final 16-bit integer output ///@}
--- a/atrac3.c Tue Aug 12 00:34:08 2008 +0000 +++ b/atrac3.c Tue Aug 12 00:36:36 2008 +0000 @@ -108,7 +108,6 @@ float outSamples[2048]; uint8_t* decoded_bytes_buffer; float tempBuf[1070]; - DECLARE_ALIGNED_16(float,mdct_tmp[512]); //@} //@{ /** extradata */ @@ -189,10 +188,9 @@ * @param pInput float input * @param pOutput float output * @param odd_band 1 if the band is an odd band - * @param mdct_tmp aligned temporary buffer for the mdct */ -static void IMLT(float *pInput, float *pOutput, int odd_band, float* mdct_tmp) +static void IMLT(float *pInput, float *pOutput, int odd_band) { int i; @@ -210,7 +208,7 @@ FFSWAP(float, pInput[i], pInput[255-i]); } - mdct_ctx.fft.imdct_calc(&mdct_ctx,pOutput,pInput,mdct_tmp); + mdct_ctx.fft.imdct_calc(&mdct_ctx,pOutput,pInput); /* Perform windowing on the output. */ dsp.vector_fmul(pOutput,mdct_window,512); @@ -757,7 +755,7 @@ for (band=0; band<4; band++) { /* Perform the IMDCT step without overlapping. */ if (band <= numBands) { - IMLT(&(pSnd->spectrum[band*256]), pSnd->IMDCT_buf, band&1,q->mdct_tmp); + IMLT(&(pSnd->spectrum[band*256]), pSnd->IMDCT_buf, band&1); } else memset(pSnd->IMDCT_buf, 0, 512 * sizeof(float));
--- a/cook.c Tue Aug 12 00:34:08 2008 +0000 +++ b/cook.c Tue Aug 12 00:36:36 2008 +0000 @@ -112,7 +112,6 @@ /* transform data */ MDCTContext mdct_ctx; - DECLARE_ALIGNED_16(FFTSample, mdct_tmp[1024]); /* temporary storage for imlt */ float* mlt_window; /* gain buffers */ @@ -734,8 +733,7 @@ int i; /* Inverse modified discrete cosine transform */ - q->mdct_ctx.fft.imdct_calc(&q->mdct_ctx, q->mono_mdct_output, - inbuffer, q->mdct_tmp); + q->mdct_ctx.fft.imdct_calc(&q->mdct_ctx, q->mono_mdct_output, inbuffer); q->imlt_window (q, buffer1, gains_ptr, previous_buffer);
--- a/dsputil.h Tue Aug 12 00:34:08 2008 +0000 +++ b/dsputil.h Tue Aug 12 00:36:36 2008 +0000 @@ -642,10 +642,8 @@ FFTComplex *tmp_buf; void (*fft_permute)(struct FFTContext *s, FFTComplex *z); void (*fft_calc)(struct FFTContext *s, FFTComplex *z); - void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp); - void (*imdct_half)(struct MDCTContext *s, FFTSample *output, - const FFTSample *input); + void (*imdct_calc)(struct MDCTContext *s, FFTSample *output, const FFTSample *input); + void (*imdct_half)(struct MDCTContext *s, FFTSample *output, const FFTSample *input); } FFTContext; int ff_fft_init(FFTContext *s, int nbits, int inverse); @@ -694,20 +692,15 @@ void ff_sine_window_init(float *window, int n); int ff_mdct_init(MDCTContext *s, int nbits, int inverse); -void ff_imdct_calc(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp); +void ff_imdct_calc(MDCTContext *s, FFTSample *output, const FFTSample *input); void ff_imdct_half(MDCTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_calc_3dn(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp); +void ff_imdct_calc_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); void ff_imdct_half_3dn(MDCTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp); +void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp); +void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input); -void ff_mdct_calc(MDCTContext *s, FFTSample *out, - const FFTSample *input, FFTSample *tmp); +void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input); void ff_mdct_end(MDCTContext *s); #define WRAPPER8_16(name8, name16)\
--- a/fft-test.c Tue Aug 12 00:34:08 2008 +0000 +++ b/fft-test.c Tue Aug 12 00:36:36 2008 +0000 @@ -177,7 +177,7 @@ int main(int argc, char **argv) { FFTComplex *tab, *tab1, *tab_ref; - FFTSample *tabtmp, *tab2; + FFTSample *tab2; int it, i, c; int do_speed = 0; int do_mdct = 0; @@ -214,7 +214,6 @@ tab = av_malloc(fft_size * sizeof(FFTComplex)); tab1 = av_malloc(fft_size * sizeof(FFTComplex)); tab_ref = av_malloc(fft_size * sizeof(FFTComplex)); - tabtmp = av_malloc(fft_size / 2 * sizeof(FFTSample)); tab2 = av_malloc(fft_size * sizeof(FFTSample)); if (do_mdct) { @@ -246,12 +245,12 @@ if (do_mdct) { if (do_inverse) { imdct_ref((float *)tab_ref, (float *)tab1, fft_nbits); - ff_imdct_calc(m, tab2, (float *)tab1, tabtmp); + ff_imdct_calc(m, tab2, (float *)tab1); check_diff((float *)tab_ref, tab2, fft_size); } else { mdct_ref((float *)tab_ref, (float *)tab1, fft_nbits); - ff_mdct_calc(m, tab2, (float *)tab1, tabtmp); + ff_mdct_calc(m, tab2, (float *)tab1); check_diff((float *)tab_ref, tab2, fft_size / 2); } @@ -278,9 +277,9 @@ for(it=0;it<nb_its;it++) { if (do_mdct) { if (do_inverse) { - ff_imdct_calc(m, (float *)tab, (float *)tab1, tabtmp); + ff_imdct_calc(m, (float *)tab, (float *)tab1); } else { - ff_mdct_calc(m, (float *)tab, (float *)tab1, tabtmp); + ff_mdct_calc(m, (float *)tab, (float *)tab1); } } else { memcpy(tab, tab1, fft_size * sizeof(FFTComplex));
--- a/i386/fft_3dn2.c Tue Aug 12 00:34:08 2008 +0000 +++ b/i386/fft_3dn2.c Tue Aug 12 00:36:36 2008 +0000 @@ -142,8 +142,7 @@ asm volatile("femms"); } -void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp) +void ff_imdct_calc_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *input) { x86_reg j, k; long n = 1 << s->nbits;
--- a/i386/fft_sse.c Tue Aug 12 00:34:08 2008 +0000 +++ b/i386/fft_sse.c Tue Aug 12 00:36:36 2008 +0000 @@ -171,8 +171,7 @@ ); } -void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp) +void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output, const FFTSample *input) { x86_reg j, k; long n = 1 << s->nbits;
--- a/mdct.c Tue Aug 12 00:34:08 2008 +0000 +++ b/mdct.c Tue Aug 12 00:36:36 2008 +0000 @@ -150,8 +150,7 @@ * @param input N/2 samples * @param tmp N/2 samples */ -void ff_imdct_calc(MDCTContext *s, FFTSample *output, - const FFTSample *input, FFTSample *tmp) +void ff_imdct_calc(MDCTContext *s, FFTSample *output, const FFTSample *input) { int k; int n = 1 << s->nbits; @@ -172,11 +171,10 @@ * @param out N/2 samples * @param tmp temporary storage of N/2 samples */ -void ff_mdct_calc(MDCTContext *s, FFTSample *out, - const FFTSample *input, FFTSample *tmp) +void ff_mdct_calc(MDCTContext *s, FFTSample *out, const FFTSample *input) { int i, j, n, n8, n4, n2, n3; - FFTSample re, im, re1, im1; + FFTSample re, im; const uint16_t *revtab = s->fft.revtab; const FFTSample *tcos = s->tcos; const FFTSample *tsin = s->tsin;
--- a/nellymoserdec.c Tue Aug 12 00:34:08 2008 +0000 +++ b/nellymoserdec.c Tue Aug 12 00:36:36 2008 +0000 @@ -50,7 +50,6 @@ float scale_bias; DSPContext dsp; MDCTContext imdct_ctx; - DECLARE_ALIGNED_16(float,imdct_tmp[NELLY_BUF_LEN]); DECLARE_ALIGNED_16(float,imdct_out[NELLY_BUF_LEN * 2]); } NellyMoserDecodeContext; @@ -120,8 +119,7 @@ memset(&aptr[NELLY_FILL_LEN], 0, (NELLY_BUF_LEN - NELLY_FILL_LEN) * sizeof(float)); - s->imdct_ctx.fft.imdct_calc(&s->imdct_ctx, s->imdct_out, - aptr, s->imdct_tmp); + s->imdct_ctx.fft.imdct_calc(&s->imdct_ctx, s->imdct_out, aptr); /* XXX: overlapping and windowing should be part of a more generic imdct function */ overlap_and_window(s, s->state, aptr, s->imdct_out);
--- a/vorbis_enc.c Tue Aug 12 00:34:08 2008 +0000 +++ b/vorbis_enc.c Tue Aug 12 00:36:36 2008 +0000 @@ -915,7 +915,7 @@ } for (channel = 0; channel < venc->channels; channel++) { - ff_mdct_calc(&venc->mdct[0], venc->coeffs + channel*window_len, venc->samples + channel*window_len*2, venc->floor/*tmp*/); + ff_mdct_calc(&venc->mdct[0], venc->coeffs + channel*window_len, venc->samples + channel*window_len*2); } if (samples) {
--- a/wma.h Tue Aug 12 00:34:08 2008 +0000 +++ b/wma.h Tue Aug 12 00:36:36 2008 +0000 @@ -115,7 +115,6 @@ DECLARE_ALIGNED_16(FFTSample, output[BLOCK_MAX_SIZE * 2]); MDCTContext mdct_ctx[BLOCK_NB_SIZES]; float *windows[BLOCK_NB_SIZES]; - DECLARE_ALIGNED_16(FFTSample, mdct_tmp[BLOCK_MAX_SIZE]); ///< temporary storage for imdct /* output buffer for one frame and the last for IMDCT windowing */ DECLARE_ALIGNED_16(float, frame_out[MAX_CHANNELS][BLOCK_MAX_SIZE * 2]); /* last frame info */
--- a/wmadec.c Tue Aug 12 00:34:08 2008 +0000 +++ b/wmadec.c Tue Aug 12 00:36:36 2008 +0000 @@ -688,8 +688,7 @@ n = s->block_len; n4 = s->block_len / 2; if(s->channel_coded[ch]){ - s->mdct_ctx[bsize].fft.imdct_calc(&s->mdct_ctx[bsize], - s->output, s->coefs[ch], s->mdct_tmp); + s->mdct_ctx[bsize].fft.imdct_calc(&s->mdct_ctx[bsize], s->output, s->coefs[ch]); }else memset(s->output, 0, sizeof(s->output));
--- a/wmaenc.c Tue Aug 12 00:34:08 2008 +0000 +++ b/wmaenc.c Tue Aug 12 00:36:36 2008 +0000 @@ -89,7 +89,7 @@ s->output[i+window_len] = audio[j] / n * win[window_len - i - 1]; s->frame_out[channel][i] = audio[j] / n * win[i]; } - ff_mdct_calc(&s->mdct_ctx[window_index], s->coefs[channel], s->output, s->mdct_tmp); + ff_mdct_calc(&s->mdct_ctx[window_index], s->coefs[channel], s->output); } }