Mercurial > libavcodec.hg
comparison dca.c @ 10152:ed85bbd5dccb libavcodec
DCA: move an aligned array from stack to context
author | mru |
---|---|
date | Thu, 10 Sep 2009 08:49:59 +0000 |
parents | 67a20f0eb42c |
children | 38ab367d4231 |
comparison
equal
deleted
inserted
replaced
10151:6cd8b6fd5f0f | 10152:ed85bbd5dccb |
---|---|
228 /* Subband samples history (for ADPCM) */ | 228 /* Subband samples history (for ADPCM) */ |
229 float subband_samples_hist[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS][4]; | 229 float subband_samples_hist[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS][4]; |
230 DECLARE_ALIGNED_16(float, subband_fir_hist[DCA_PRIM_CHANNELS_MAX][512]); | 230 DECLARE_ALIGNED_16(float, subband_fir_hist[DCA_PRIM_CHANNELS_MAX][512]); |
231 float subband_fir_noidea[DCA_PRIM_CHANNELS_MAX][32]; | 231 float subband_fir_noidea[DCA_PRIM_CHANNELS_MAX][32]; |
232 int hist_index[DCA_PRIM_CHANNELS_MAX]; | 232 int hist_index[DCA_PRIM_CHANNELS_MAX]; |
233 DECLARE_ALIGNED_16(float, raXin[32]); | |
233 | 234 |
234 int output; ///< type of output | 235 int output; ///< type of output |
235 float add_bias; ///< output bias | 236 float add_bias; ///< output bias |
236 float scale_bias; ///< output scale | 237 float scale_bias; ///< output scale |
237 | 238 |
749 float samples_in[32][8], float *samples_out, | 750 float samples_in[32][8], float *samples_out, |
750 float scale, float bias) | 751 float scale, float bias) |
751 { | 752 { |
752 const float *prCoeff; | 753 const float *prCoeff; |
753 int i, j; | 754 int i, j; |
754 DECLARE_ALIGNED_16(float, raXin[32]); | |
755 | 755 |
756 int hist_index= s->hist_index[chans]; | 756 int hist_index= s->hist_index[chans]; |
757 float *subband_fir_hist2 = s->subband_fir_noidea[chans]; | 757 float *subband_fir_hist2 = s->subband_fir_noidea[chans]; |
758 | 758 |
759 int subindex; | 759 int subindex; |
769 /* Reconstructed channel sample index */ | 769 /* Reconstructed channel sample index */ |
770 for (subindex = 0; subindex < 8; subindex++) { | 770 for (subindex = 0; subindex < 8; subindex++) { |
771 float *subband_fir_hist = s->subband_fir_hist[chans] + hist_index; | 771 float *subband_fir_hist = s->subband_fir_hist[chans] + hist_index; |
772 /* Load in one sample from each subband and clear inactive subbands */ | 772 /* Load in one sample from each subband and clear inactive subbands */ |
773 for (i = 0; i < s->subband_activity[chans]; i++){ | 773 for (i = 0; i < s->subband_activity[chans]; i++){ |
774 if((i-1)&2) raXin[i] = -samples_in[i][subindex]; | 774 if((i-1)&2) s->raXin[i] = -samples_in[i][subindex]; |
775 else raXin[i] = samples_in[i][subindex]; | 775 else s->raXin[i] = samples_in[i][subindex]; |
776 } | 776 } |
777 for (; i < 32; i++) | 777 for (; i < 32; i++) |
778 raXin[i] = 0.0; | 778 s->raXin[i] = 0.0; |
779 | 779 |
780 ff_imdct_half(&s->imdct, subband_fir_hist, raXin); | 780 ff_imdct_half(&s->imdct, subband_fir_hist, s->raXin); |
781 | 781 |
782 /* Multiply by filter coefficients */ | 782 /* Multiply by filter coefficients */ |
783 for (i = 0; i < 16; i++){ | 783 for (i = 0; i < 16; i++){ |
784 float a= subband_fir_hist2[i ]; | 784 float a= subband_fir_hist2[i ]; |
785 float b= subband_fir_hist2[i+16]; | 785 float b= subband_fir_hist2[i+16]; |