summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohamed Tarek <mt@rockbox.org>2010-02-15 00:04:33 +0000
committerMohamed Tarek <mt@rockbox.org>2010-02-15 00:04:33 +0000
commit1bef4c66501893b4b7e154979a80f5386cbe964f (patch)
tree0b190cc139ee08b52c036d5db68b2a3a680c9dd2
parentb540be8f4b5b168cbdd86e2d5b38f0b2917d1c86 (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.c20
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++) {