diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2011-10-19 11:09:13 +0300 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2011-10-19 11:13:11 +0300 |
commit | 79f472538f1c1caa9b444d0de435159b6fbb70eb (patch) | |
tree | 642a99509d3d1fe5bc1fa8bd3258746fd1aa2903 | |
parent | 54cea4274f3368439a3881a8aa5cfa850d4b555a (diff) |
sbc: Reduce for-loop induced indentation in sbc_unpack_frame
-rw-r--r-- | sbc/sbc.c | 36 |
1 files changed, 20 insertions, 16 deletions
@@ -493,26 +493,30 @@ static int sbc_unpack_frame(const uint8_t *data, struct sbc_frame *frame, for (blk = 0; blk < frame->blocks; blk++) { for (ch = 0; ch < frame->channels; ch++) { for (sb = 0; sb < frame->subbands; sb++) { - if (levels[ch][sb] > 0) { - uint32_t shift = - frame->scale_factor[ch][sb] + + uint32_t shift; + + if (levels[ch][sb] == 0) { + frame->sb_sample[blk][ch][sb] = 0; + continue; + } + + shift = frame->scale_factor[ch][sb] + 1 + SBCDEC_FIXED_EXTRA_BITS; - audio_sample = 0; - for (bit = 0; bit < bits[ch][sb]; bit++) { - if (consumed > len * 8) - return -1; - if ((data[consumed >> 3] >> (7 - (consumed & 0x7))) & 0x01) - audio_sample |= 1 << (bits[ch][sb] - bit - 1); + audio_sample = 0; + for (bit = 0; bit < bits[ch][sb]; bit++) { + if (consumed > len * 8) + return -1; - consumed++; - } + if ((data[consumed >> 3] >> (7 - (consumed & 0x7))) & 0x01) + audio_sample |= 1 << (bits[ch][sb] - bit - 1); - frame->sb_sample[blk][ch][sb] = (int32_t) - (((((uint64_t) audio_sample << 1) | 1) << shift) / - levels[ch][sb]) - (1 << shift); - } else - frame->sb_sample[blk][ch][sb] = 0; + consumed++; + } + + frame->sb_sample[blk][ch][sb] = (int32_t) + (((((uint64_t) audio_sample << 1) | 1) << shift) / + levels[ch][sb]) - (1 << shift); } } } |