diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c index eb583426ed..04419716cd 100644 --- a/libavcodec/aaccoder.c +++ b/libavcodec/aaccoder.c @@ -1177,10 +1177,10 @@ static void search_for_quantizers_fast(AVCodecContext *avctx, AACEncContext *s, sce->sf_idx[(w+w2)*16+g] = sce->sf_idx[w*16+g]; } -static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce, - const float lambda) +static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce) { int start = 0, w, w2, g; + const float lambda = s->lambda; const float freq_mult = avctx->sample_rate/(1024.0f/sce->ics.num_windows)/2.0f; const float spread_threshold = NOISE_SPREAD_THRESHOLD*(lambda/120.f); const float thr_mult = NOISE_LAMBDA_NUMERATOR/lambda; @@ -1214,8 +1214,7 @@ static void search_for_pns(AACEncContext *s, AVCodecContext *avctx, SingleChanne } } -static void search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElement *cpe, - const float lambda) +static void search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElement *cpe) { float IS[128]; float *L34 = s->scoefs + 128*0, *R34 = s->scoefs + 128*1; @@ -1224,6 +1223,7 @@ static void search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElemen SingleChannelElement *sce1 = &cpe->ch[1]; int start = 0, count = 0, i, w, w2, g; const float freq_mult = avctx->sample_rate/(1024.0f/sce0->ics.num_windows)/2.0f; + const float lambda = s->lambda; for (w = 0; w < 128; w++) if (sce1->band_type[w] >= INTENSITY_BT2) @@ -1312,12 +1312,12 @@ static void search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElemen cpe->is_mode = !!count; } -static void search_for_ms(AACEncContext *s, ChannelElement *cpe, - const float lambda) +static void search_for_ms(AACEncContext *s, ChannelElement *cpe) { int start = 0, i, w, w2, g; float M[128], S[128]; float *L34 = s->scoefs, *R34 = s->scoefs + 128, *M34 = s->scoefs + 128*2, *S34 = s->scoefs + 128*3; + const float lambda = s->lambda; SingleChannelElement *sce0 = &cpe->ch[0]; SingleChannelElement *sce1 = &cpe->ch[1]; if (!cpe->common_window) diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index ee1a835439..152203f062 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -696,7 +696,7 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, if (s->options.pns && s->coder->search_for_pns) { for (ch = 0; ch < chans; ch++) { s->cur_channel = start_ch + ch; - s->coder->search_for_pns(s, avctx, &cpe->ch[ch], s->lambda); + s->coder->search_for_pns(s, avctx, &cpe->ch[ch]); } } s->cur_channel = start_ch; @@ -707,11 +707,11 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, for (g = 0; g < ics->num_swb; g++) cpe->ms_mask[w*16+g] = 1; } else if (s->coder->search_for_ms) { - s->coder->search_for_ms(s, cpe, s->lambda); + s->coder->search_for_ms(s, cpe); } } if (chans > 1 && s->options.intensity_stereo && s->coder->search_for_is) { - s->coder->search_for_is(s, avctx, cpe, s->lambda); + s->coder->search_for_is(s, avctx, cpe); if (cpe->is_mode) is_mode = 1; } if (s->coder->set_special_band_scalefactors) diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h index 1f05aabd76..80ada0774b 100644 --- a/libavcodec/aacenc.h +++ b/libavcodec/aacenc.h @@ -56,9 +56,9 @@ typedef struct AACCoefficientsEncoder { void (*quantize_and_encode_band)(struct AACEncContext *s, PutBitContext *pb, const float *in, int size, int scale_idx, int cb, const float lambda, int rtz); void (*set_special_band_scalefactors)(struct AACEncContext *s, SingleChannelElement *sce); - void (*search_for_pns)(struct AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce, const float lambda); - void (*search_for_ms)(struct AACEncContext *s, ChannelElement *cpe, const float lambda); - void (*search_for_is)(struct AACEncContext *s, AVCodecContext *avctx, ChannelElement *cpe, const float lambda); + void (*search_for_pns)(struct AACEncContext *s, AVCodecContext *avctx, SingleChannelElement *sce); + void (*search_for_ms)(struct AACEncContext *s, ChannelElement *cpe); + void (*search_for_is)(struct AACEncContext *s, AVCodecContext *avctx, ChannelElement *cpe); } AACCoefficientsEncoder; extern AACCoefficientsEncoder ff_aac_coders[];