|
|
@@ -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, |
|
|
|