mirror of https://git.ffmpeg.org/ffmpeg.git
mpegaudio: avoid unnecessary copy in high-precision mode
Originally committed as revision 18745 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
adb206c238
commit
bf030c887f
|
@ -846,31 +846,31 @@ void ff_mpa_synth_filter(MPA_INT *synth_buf_ptr, int *synth_buf_offset,
|
||||||
OUT_INT *samples, int incr,
|
OUT_INT *samples, int incr,
|
||||||
int32_t sb_samples[SBLIMIT])
|
int32_t sb_samples[SBLIMIT])
|
||||||
{
|
{
|
||||||
int32_t tmp[32];
|
|
||||||
register MPA_INT *synth_buf;
|
register MPA_INT *synth_buf;
|
||||||
register const MPA_INT *w, *w2, *p;
|
register const MPA_INT *w, *w2, *p;
|
||||||
int j, offset, v;
|
int j, offset;
|
||||||
OUT_INT *samples2;
|
OUT_INT *samples2;
|
||||||
#if FRAC_BITS <= 15
|
#if FRAC_BITS <= 15
|
||||||
|
int32_t tmp[32];
|
||||||
int sum, sum2;
|
int sum, sum2;
|
||||||
#else
|
#else
|
||||||
int64_t sum, sum2;
|
int64_t sum, sum2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dct32(tmp, sb_samples);
|
|
||||||
|
|
||||||
offset = *synth_buf_offset;
|
offset = *synth_buf_offset;
|
||||||
synth_buf = synth_buf_ptr + offset;
|
synth_buf = synth_buf_ptr + offset;
|
||||||
|
|
||||||
for(j=0;j<32;j++) {
|
|
||||||
v = tmp[j];
|
|
||||||
#if FRAC_BITS <= 15
|
#if FRAC_BITS <= 15
|
||||||
|
dct32(tmp, sb_samples);
|
||||||
|
for(j=0;j<32;j++) {
|
||||||
/* NOTE: can cause a loss in precision if very high amplitude
|
/* NOTE: can cause a loss in precision if very high amplitude
|
||||||
sound */
|
sound */
|
||||||
v = av_clip_int16(v);
|
synth_buf[j] = av_clip_int16(tmp[j]);
|
||||||
#endif
|
|
||||||
synth_buf[j] = v;
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
dct32(synth_buf, sb_samples);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* copy to avoid wrap */
|
/* copy to avoid wrap */
|
||||||
memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT));
|
memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue