From: Josh Coalson Date: Mon, 12 Mar 2007 07:23:22 +0000 (+0000) Subject: slight optimization to conversion of M/S->L/R X-Git-Tag: 1.2.0~111 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3847879a5519959a225a273b935384c562a1a52e;p=platform%2Fupstream%2Fflac.git slight optimization to conversion of M/S->L/R --- diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c index e09db2f..0da4661 100644 --- a/src/libFLAC/stream_decoder.c +++ b/src/libFLAC/stream_decoder.c @@ -1981,7 +1981,7 @@ FLAC__bool read_frame_(FLAC__StreamDecoder *decoder, FLAC__bool *got_a_frame, FL { unsigned channel; unsigned i; - FLAC__int32 mid, side, left, right; + FLAC__int32 mid, side; unsigned frame_crc; /* the one we calculate from the input stream */ FLAC__uint32 x; @@ -2063,15 +2063,19 @@ FLAC__bool read_frame_(FLAC__StreamDecoder *decoder, FLAC__bool *got_a_frame, FL case FLAC__CHANNEL_ASSIGNMENT_MID_SIDE: FLAC__ASSERT(decoder->private_->frame.header.channels == 2); for(i = 0; i < decoder->private_->frame.header.blocksize; i++) { +#if 1 mid = decoder->private_->output[0][i]; side = decoder->private_->output[1][i]; mid <<= 1; - if(side & 1) /* i.e. if 'side' is odd... */ - mid++; - left = mid + side; - right = mid - side; - decoder->private_->output[0][i] = left >> 1; - decoder->private_->output[1][i] = right >> 1; + mid |= (side & 1); /* i.e. if 'side' is odd... */ + decoder->private_->output[0][i] = (mid + side) >> 1; + decoder->private_->output[1][i] = (mid - side) >> 1; +#else + //@@@@@@ OPT: try without 'side' temp variable + mid = (decoder->private_->output[0][i] << 1) | (decoder->private_->output[1][i] & 1); /* i.e. if 'side' is odd... */ + decoder->private_->output[0][i] = (mid + decoder->private_->output[1][i]) >> 1; + decoder->private_->output[1][i] = (mid - decoder->private_->output[1][i]) >> 1; +#endif } break; default: