summaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-07-29 19:49:22 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-07-29 22:02:46 +0200
commit72dabdfc58064fcb249f26fc7afca2221f18a832 (patch)
treee37f5b9b18ecfd3181c19d2ad43b13ecaab6c0bc /libavcodec
parent981d97f69789bdbf7a0cb325a70befeaeeb4d9e3 (diff)
downloadffmpeg-streaming-72dabdfc58064fcb249f26fc7afca2221f18a832.zip
ffmpeg-streaming-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>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/aacpsy.c2
-rw-r--r--libavcodec/psymodel.c3
-rw-r--r--libavcodec/psymodel.h2
3 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c
index 585a249..a9a8988 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 a17aecc..bdd2509 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 317974b..37c8191 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
*/
OpenPOWER on IntegriCloud