diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-07-29 19:49:22 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-07-29 22:02:46 +0200 |
commit | 72dabdfc58064fcb249f26fc7afca2221f18a832 (patch) | |
tree | e37f5b9b18ecfd3181c19d2ad43b13ecaab6c0bc | |
parent | 981d97f69789bdbf7a0cb325a70befeaeeb4d9e3 (diff) | |
download | ffmpeg-72dabdfc58064fcb249f26fc7afca2221f18a832.tar.gz |
aacenc: new default cutoff
Improves subjective quality
Formula and testing by: kamedo2 <fujisakihir90@yahoo.co.jp>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/aacpsy.c | 2 | ||||
-rw-r--r-- | libavcodec/psymodel.c | 3 | ||||
-rw-r--r-- | libavcodec/psymodel.h | 2 |
3 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c index 585a249da3..a9a89888bf 100644 --- a/libavcodec/aacpsy.c +++ b/libavcodec/aacpsy.c @@ -292,7 +292,7 @@ static av_cold int psy_3gpp_init(FFPsyContext *ctx) { int i, j, g, start; float prev, minscale, minath, minsnr, pe_min; const int chan_bitrate = ctx->avctx->bit_rate / ctx->avctx->channels; - const int bandwidth = ctx->avctx->cutoff ? ctx->avctx->cutoff : ctx->avctx->sample_rate / 2; + const int bandwidth = ctx->avctx->cutoff ? ctx->avctx->cutoff : AAC_CUTOFF(ctx->avctx); const float num_bark = calc_bark((float)bandwidth); ctx->model_priv_data = av_mallocz(sizeof(AacPsyContext)); diff --git a/libavcodec/psymodel.c b/libavcodec/psymodel.c index a17aecc422..bdd2509f35 100644 --- a/libavcodec/psymodel.c +++ b/libavcodec/psymodel.c @@ -100,6 +100,9 @@ av_cold struct FFPsyPreprocessContext* ff_psy_preprocess_init(AVCodecContext *av if (avctx->cutoff > 0) cutoff_coeff = 2.0 * avctx->cutoff / avctx->sample_rate; + if (!cutoff_coeff && avctx->codec_id == CODEC_ID_AAC) + cutoff_coeff = 2.0 * AAC_CUTOFF(avctx) / avctx->sample_rate; + if (cutoff_coeff) ctx->fcoeffs = ff_iir_filter_init_coeffs(avctx, FF_FILTER_TYPE_BUTTERWORTH, FF_FILTER_MODE_LOWPASS, FILT_ORDER, diff --git a/libavcodec/psymodel.h b/libavcodec/psymodel.h index 317974bca4..37c8191724 100644 --- a/libavcodec/psymodel.h +++ b/libavcodec/psymodel.h @@ -29,6 +29,8 @@ /** maximum number of channels */ #define PSY_MAX_CHANS 20 +#define AAC_CUTOFF(s) (s->bit_rate ? FFMIN3(4000 + s->bit_rate/8, 12000 + s->bit_rate/32, s->sample_rate / 2) : (s->sample_rate / 2)) + /** * single band psychoacoustic information */ |