diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-05-22 17:12:36 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-05-23 17:37:48 +0400 |
commit | eee19198ef5aed3b99ac0b136685bd28e6717f61 (patch) | |
tree | 9a831bff59e753fb16f73515bbbf736789b37bbf /libavcodec/libfaac.c | |
parent | e8c26557a4eeeadfa13b1a5dba9b29a5f94378ee (diff) |
avcodec/libfaac: fallback to a supported bitrate if the requested is not supported
Fixes: Ticket2587
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/libfaac.c')
-rw-r--r-- | libavcodec/libfaac.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libavcodec/libfaac.c b/libavcodec/libfaac.c index ac18fe209f..f37e03a655 100644 --- a/libavcodec/libfaac.c +++ b/libavcodec/libfaac.c @@ -151,9 +151,20 @@ static av_cold int Faac_encode_init(AVCodecContext *avctx) } if (!faacEncSetConfiguration(s->faac_handle, faac_cfg)) { - av_log(avctx, AV_LOG_ERROR, "libfaac doesn't support this output format!\n"); - ret = AVERROR(EINVAL); - goto error; + int i; + for (i = avctx->bit_rate/1000; i ; i--) { + faac_cfg->bitRate = 1000*i / avctx->channels; + if (faacEncSetConfiguration(s->faac_handle, faac_cfg)) + break; + } + if (!i) { + av_log(avctx, AV_LOG_ERROR, "libfaac doesn't support this output format!\n"); + ret = AVERROR(EINVAL); + goto error; + } else { + avctx->bit_rate = 1000*i; + av_log(avctx, AV_LOG_WARNING, "libfaac doesn't support the specified bitrate, using %dkbit/s instead\n", i); + } } avctx->delay = FAAC_DELAY_SAMPLES; |