diff --git a/libavcodec/aacenc_is.c b/libavcodec/aacenc_is.c index 405f178556..46a9773904 100644 --- a/libavcodec/aacenc_is.c +++ b/libavcodec/aacenc_is.c @@ -54,7 +54,7 @@ struct AACISError ff_aac_is_encoding_err(AACEncContext *s, ChannelElement *cpe, FFPsyBand *band0 = &s->psy.ch[s->cur_channel+0].psy_bands[(w+w2)*16+g]; FFPsyBand *band1 = &s->psy.ch[s->cur_channel+1].psy_bands[(w+w2)*16+g]; int is_band_type, is_sf_idx = FFMAX(1, sce0->sf_idx[w*16+g]-4); - float e01_34 = phase*pow(ener1/ener0, 3.0/4.0); + float e01_34 = phase*pos_pow34(ener1/ener0); float maxval, dist_spec_err = 0.0f; float minthr = FFMIN(band0->threshold, band1->threshold); for (i = 0; i < sce0->ics.swb_sizes[g]; i++) diff --git a/libavcodec/aacenc_utils.h b/libavcodec/aacenc_utils.h index 736e4a06da..cb5bc8da12 100644 --- a/libavcodec/aacenc_utils.h +++ b/libavcodec/aacenc_utils.h @@ -45,6 +45,11 @@ static inline void abs_pow34_v(float *out, const float *in, const int size) } } +static inline float pos_pow34(float a) +{ + return sqrtf(a * sqrtf(a)); +} + /** * Quantize one coefficient. * @return absolute value of the quantized coefficient