diff options
author | Mohamed Tarek <mt@rockbox.org> | 2010-02-15 00:04:33 +0000 |
---|---|---|
committer | Mohamed Tarek <mt@rockbox.org> | 2010-02-15 00:04:33 +0000 |
commit | 1bef4c66501893b4b7e154979a80f5386cbe964f (patch) | |
tree | 0b190cc139ee08b52c036d5db68b2a3a680c9dd2 | |
parent | b540be8f4b5b168cbdd86e2d5b38f0b2917d1c86 (diff) |
revert last commit (r24660). There was a mistake in the location of the
shifts leading to a deteriorated sound quality for some samples.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24662 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/codecs/libatrac/atrac3.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/apps/codecs/libatrac/atrac3.c b/apps/codecs/libatrac/atrac3.c index 157aff57f7..467f42f161 100644 --- a/apps/codecs/libatrac/atrac3.c +++ b/apps/codecs/libatrac/atrac3.c @@ -410,19 +410,13 @@ static int decodeSpectrum (GetBitContext *gb, int32_t *pOut) SF = fixmul31(SFTable_fixed[SF_idxs[cnt]], iMaxQuant_fix[subband_vlc_index[cnt]]); /* Inverse quantize the coefficients. */ - - /* Remark: Hardcoded hack to add 2 bits (empty) fract part to internal sample - * representation. Needed for higher accuracy in internal calculations as - * well as for DSP configuration. See also: ../atrac3_rm.c, DSP_SET_SAMPLE_DEPTH - * Todo: Check spectral requantisation for using and outputting samples with - * fract part. */ if((first/256) &1) { /* Odd band - Reverse coefficients */ for (pIn=mantissas ; last>first; last--, pIn++) - pOut[last] = fixmul16(*pIn, SF) << 2; + pOut[last] = fixmul16(*pIn, SF); } else { for (pIn=mantissas ; first<last; first++, pIn++) - pOut[first] = fixmul16(*pIn, SF) << 2; + pOut[first] = fixmul16(*pIn, SF); } } else { @@ -783,6 +777,16 @@ static int decodeChannelSoundUnit (GetBitContext *gb, channel_unit *pSnd, int32_ numBands = (subbandTab[numSubbands] - 1) >> 8; if (lastTonal >= 0) numBands = FFMAX((lastTonal + 256) >> 8, numBands); + + /* Remark: Hardcoded hack to add 2 bits (empty) fract part to internal sample + * representation. Needed for higher accuracy in internal calculations as + * well as for DSP configuration. See also: ../atrac3_rm.c, DSP_SET_SAMPLE_DEPTH + * Todo: Check spectral requantisation for using and outputting samples with + * fract part. */ + int32_t i; + for (i=0; i<1024; ++i) { + pSnd->spectrum[i] <<= 2; + } /* Reconstruct time domain samples. */ for (band=0; band<4; band++) { |