[SCM] libav/experimental: Check for bit allocation error in ac3_encode_frame(). Move error log printout to ac3_encode_frame().
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 17:20:20 UTC 2013
The following commit has been merged in the experimental branch:
commit dc0bc0f84ec3ecc475182c5c2934ca8ef5a45de2
Author: Justin Ruggles <justin.ruggles at gmail.com>
Date: Tue Dec 14 14:53:30 2010 +0000
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
diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c
index 3422a58..1af3f4b 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);
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list