|
|
|
@ -975,16 +975,19 @@ static int compute_bit_allocation(AC3EncodeContext *s, |
|
|
|
|
offset until we can pack everything in the requested frame size */ |
|
|
|
|
|
|
|
|
|
bits_left = 8 * s->frame_size - (s->frame_bits + s->exponent_bits); |
|
|
|
|
|
|
|
|
|
snr_offset = s->coarse_snr_offset << 4; |
|
|
|
|
|
|
|
|
|
while (snr_offset >= 0 && |
|
|
|
|
bit_alloc(s, mask, psd, bap, snr_offset) > bits_left) |
|
|
|
|
bit_alloc(s, mask, psd, bap, snr_offset) > bits_left) { |
|
|
|
|
snr_offset -= 64; |
|
|
|
|
} |
|
|
|
|
if (snr_offset < 0) { |
|
|
|
|
return AVERROR(EINVAL); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
while (snr_offset + 64 <= 1023 && |
|
|
|
|
bit_alloc(s, mask, psd, bap1, |
|
|
|
|
snr_offset + 64) <= bits_left) { |
|
|
|
|
bit_alloc(s, mask, psd, bap1, snr_offset + 64) <= bits_left) { |
|
|
|
|
snr_offset += 64; |
|
|
|
|
memcpy(bap, bap1, sizeof(bap1)); |
|
|
|
|
} |
|
|
|
@ -994,14 +997,12 @@ static int compute_bit_allocation(AC3EncodeContext *s, |
|
|
|
|
memcpy(bap, bap1, sizeof(bap1)); |
|
|
|
|
} |
|
|
|
|
while (snr_offset + 4 <= 1023 && |
|
|
|
|
bit_alloc(s, mask, psd, bap1, |
|
|
|
|
snr_offset + 4) <= bits_left) { |
|
|
|
|
bit_alloc(s, mask, psd, bap1, snr_offset + 4) <= bits_left) { |
|
|
|
|
snr_offset += 4; |
|
|
|
|
memcpy(bap, bap1, sizeof(bap1)); |
|
|
|
|
} |
|
|
|
|
while (snr_offset + 1 <= 1023 && |
|
|
|
|
bit_alloc(s, mask, psd, bap1, |
|
|
|
|
snr_offset + 1) <= bits_left) { |
|
|
|
|
bit_alloc(s, mask, psd, bap1, snr_offset + 1) <= bits_left) { |
|
|
|
|
snr_offset++; |
|
|
|
|
memcpy(bap, bap1, sizeof(bap1)); |
|
|
|
|
} |
|
|
|
|