From dc0bc0f84ec3ecc475182c5c2934ca8ef5a45de2 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 14 Dec 2010 14:53:30 +0000 Subject: [PATCH] Check for bit allocation error in ac3_encode_frame(). Move error log printout to ac3_encode_frame(). Originally committed as revision 25999 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/ac3enc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index 3422a580aa..1af3f4b361 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -948,8 +948,7 @@ static int compute_bit_allocation(AC3EncodeContext *s, bit_alloc(s, mask, psd, bap, frame_bits, coarse_snr_offset, 0) < 0) coarse_snr_offset -= SNR_INC1; if (coarse_snr_offset < 0) { - av_log(NULL, AV_LOG_ERROR, "Bit allocation failed. Try increasing the bitrate.\n"); - return -1; + return AVERROR(EINVAL); } while (coarse_snr_offset + SNR_INC1 <= 63 && bit_alloc(s, mask, psd, bap1, frame_bits, @@ -1411,6 +1410,7 @@ static int ac3_encode_frame(AVCodecContext *avctx, int8_t exp_shift[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS]; uint16_t qmant[AC3_MAX_BLOCKS][AC3_MAX_CHANNELS][AC3_MAX_COEFS]; int frame_bits; + int ret; if (s->bit_alloc.sr_code == 1) adjust_frame_size(s); @@ -1422,7 +1422,11 @@ static int ac3_encode_frame(AVCodecContext *avctx, frame_bits = process_exponents(s, mdct_coef, exp_shift, exp, exp_strategy, encoded_exp, num_exp_groups, grouped_exp); - compute_bit_allocation(s, bap, encoded_exp, exp_strategy, frame_bits); + ret = compute_bit_allocation(s, bap, encoded_exp, exp_strategy, frame_bits); + if (ret) { + av_log(avctx, AV_LOG_ERROR, "Bit allocation failed. Try increasing the bitrate.\n"); + return ret; + } quantize_mantissas(s, mdct_coef, exp_shift, encoded_exp, bap, qmant);