diff options
author | Christophe Gisquet <christophe.gisquet@gmail.com> | 2014-12-04 00:04:50 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-12-04 18:24:33 +0100 |
commit | 291747581e3dd0620a92036c5669d22ed0f8c269 (patch) | |
tree | 949d89af09a2dd71eb0a8c796709316f8213c862 /libavcodec | |
parent | 0f6931f4b60cf1e65fd9a5da791c8ee913053f52 (diff) | |
download | ffmpeg-291747581e3dd0620a92036c5669d22ed0f8c269.tar.gz |
imc: make issue non-fatal
The "faulty" samples actually sound fine when ignoring this issue.
For ticket #3886, more samples are decoded.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/imc.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/libavcodec/imc.c b/libavcodec/imc.c index 6c9ffd7980..0d7c97b603 100644 --- a/libavcodec/imc.c +++ b/libavcodec/imc.c @@ -790,7 +790,8 @@ static int inverse_quant_coeff(IMCContext *q, IMCChannel *chctx, } -static int imc_get_coeffs(IMCContext *q, IMCChannel *chctx) +static void imc_get_coeffs(AVCodecContext *avctx, + IMCContext *q, IMCChannel *chctx) { int i, j, cw_len, cw; @@ -803,8 +804,9 @@ static int imc_get_coeffs(IMCContext *q, IMCChannel *chctx) cw = 0; if (get_bits_count(&q->gb) + cw_len > 512) { - av_dlog(NULL, "Band %i coeff %i cw_len %i\n", i, j, cw_len); - return AVERROR_INVALIDDATA; + av_log(avctx, AV_LOG_WARNING, + "Potential problem on band %i, coefficient %i" + ": cw_len=%i\n", i, j, cw_len); } if (cw_len && (!chctx->bandFlagsBuf[i] || !chctx->skipFlags[j])) @@ -814,7 +816,6 @@ static int imc_get_coeffs(IMCContext *q, IMCChannel *chctx) } } } - return 0; } static void imc_refine_bit_allocation(IMCContext *q, IMCChannel *chctx) @@ -995,11 +996,7 @@ static int imc_decode_block(AVCodecContext *avctx, IMCContext *q, int ch) memset(chctx->codewords, 0, sizeof(chctx->codewords)); - if (imc_get_coeffs(q, chctx) < 0) { - av_log(avctx, AV_LOG_ERROR, "Read coefficients failed\n"); - chctx->decoder_reset = 1; - return AVERROR_INVALIDDATA; - } + imc_get_coeffs(avctx, q, chctx); if (inverse_quant_coeff(q, chctx, stream_format_code) < 0) { av_log(avctx, AV_LOG_ERROR, "Inverse quantization of coefficients failed\n"); |