diff options
author | Rostislav Pehlivanov <atomnuker@gmail.com> | 2015-08-21 19:20:22 +0100 |
---|---|---|
committer | Rostislav Pehlivanov <atomnuker@gmail.com> | 2015-08-21 19:20:22 +0100 |
commit | eab12d072e657ec748f0259b5281bd6912dccd70 (patch) | |
tree | f7790b97014e4040183bf290f22e3004ad3bd77c /libavcodec/aacenc.c | |
parent | d1ca7142ac93e713dce5654476b7b91b00ebbef2 (diff) | |
download | ffmpeg-eab12d072e657ec748f0259b5281bd6912dccd70.tar.gz |
aacenc: do not reject AAC-Main profile
This commit permits for the use of the Main profile
in encoding. The functionality of that profile will
be added in the commits following. By itself, this
commit does not alter anything.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Diffstat (limited to 'libavcodec/aacenc.c')
-rw-r--r-- | libavcodec/aacenc.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index 4ade340bf7..2775dd9f7a 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -57,7 +57,7 @@ static void put_audio_specific_config(AVCodecContext *avctx) AACEncContext *s = avctx->priv_data; init_put_bits(&pb, avctx->extradata, avctx->extradata_size); - put_bits(&pb, 5, 2); //object type - AAC-LC + put_bits(&pb, 5, s->profile+1); //profile put_bits(&pb, 4, s->samplerate_index); //sample rate index put_bits(&pb, 4, s->channels); //GASpecificConfig @@ -748,10 +748,18 @@ static av_cold int aac_encode_init(AVCodecContext *avctx) "Unsupported sample rate %d\n", avctx->sample_rate); ERROR_IF(s->channels > AAC_MAX_CHANNELS, "Unsupported number of channels: %d\n", s->channels); - ERROR_IF(avctx->profile != FF_PROFILE_UNKNOWN && avctx->profile != FF_PROFILE_AAC_LOW, - "Unsupported profile %d\n", avctx->profile); WARN_IF(1024.0 * avctx->bit_rate / avctx->sample_rate > 6144 * s->channels, "Too many bits per frame requested, clamping to max\n"); + if (avctx->profile == FF_PROFILE_AAC_MAIN) { + s->options.pred = 1; + } else if (avctx->profile == FF_PROFILE_AAC_LOW && s->options.pred) { + s->profile = 0; /* Main */ + WARN_IF(1, "Prediction requested, changing profile to AAC-Main\n"); + } else if (avctx->profile == FF_PROFILE_AAC_LOW) { + s->profile = 1; /* Low */ + } else { + ERROR_IF(1, "Unsupported profile %d\n", avctx->profile); + } avctx->bit_rate = (int)FFMIN( 6144 * s->channels / 1024.0 * avctx->sample_rate, |