diff options
author | Brad Midgley <bmidgley@xmission.com> | 2008-02-15 18:06:32 +0000 |
---|---|---|
committer | Brad Midgley <bmidgley@xmission.com> | 2008-02-15 18:06:32 +0000 |
commit | ff51f4b0b2724754184baa08b09a47cad7b7b4d5 (patch) | |
tree | f1b189d94c196b7294991a6130b8bdc497eea495 /sbc/sbc.c | |
parent | 0a47bd96e7953af2345b9c603db90e71d51dd39c (diff) |
fix for decoder noise at high bitpools
Diffstat (limited to 'sbc/sbc.c')
-rw-r--r-- | sbc/sbc.c | 12 |
1 files changed, 2 insertions, 10 deletions
@@ -543,16 +543,8 @@ static int sbc_unpack_frame(const uint8_t *data, struct sbc_frame *frame, for (sb = 0; sb < frame->subbands; sb++) { if (levels[ch][sb] > 0) { frame->sb_sample[blk][ch][sb] = - (((frame->audio_sample[blk][ch][sb] << 16) | 0x8000) / - levels[ch][sb]) - 0x8000; - - frame->sb_sample[blk][ch][sb] >>= 3; - - /* Q13 */ - frame->sb_sample[blk][ch][sb] = - (frame->sb_sample[blk][ch][sb] << - (frame->scale_factor[ch][sb] + 1)); - + (((frame->audio_sample[blk][ch][sb] << 1) | 1) << frame->scale_factor[ch][sb])/ + levels[ch][sb] - (1 << frame->scale_factor[ch][sb]); } else frame->sb_sample[blk][ch][sb] = 0; } |