Simplify bit allocation search by using a loop for the SNR offset increment.

Originally committed as revision 26044 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Justin Ruggles 2010-12-17 15:02:12 +00:00
parent 1653027ac4
commit 98e34e71c0

View File

@ -1055,7 +1055,7 @@ static int cbr_bit_allocation(AC3EncodeContext *s)
{
int ch;
int bits_left;
int snr_offset;
int snr_offset, snr_incr;
bits_left = 8 * s->frame_size - (s->frame_bits + s->exponent_bits);
@ -1069,25 +1069,12 @@ static int cbr_bit_allocation(AC3EncodeContext *s)
return AVERROR(EINVAL);
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
for (snr_incr = 64; snr_incr > 0; snr_incr >>= 2) {
while (snr_offset + 64 <= 1023 &&
bit_alloc(s, snr_offset + 64) <= bits_left) {
snr_offset += 64;
bit_alloc(s, snr_offset + snr_incr) <= bits_left) {
snr_offset += snr_incr;
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
}
while (snr_offset + 16 <= 1023 &&
bit_alloc(s, snr_offset + 16) <= bits_left) {
snr_offset += 16;
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
}
while (snr_offset + 4 <= 1023 &&
bit_alloc(s, snr_offset + 4) <= bits_left) {
snr_offset += 4;
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
}
while (snr_offset + 1 <= 1023 &&
bit_alloc(s, snr_offset + 1) <= bits_left) {
snr_offset++;
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
}
FFSWAP(uint8_t *, s->bap_buffer, s->bap1_buffer);
reset_block_bap(s);