diff options
author | Claudio Freire <klaussfreire@gmail.com> | 2016-01-16 20:47:00 -0300 |
---|---|---|
committer | Claudio Freire <klaussfreire@gmail.com> | 2016-01-17 12:52:54 -0300 |
commit | df3fa48288d6e79ac4a193406d514c1dace22397 (patch) | |
tree | 0d3189c92993151d28089eb53c209643b0ab64f4 /libavcodec | |
parent | 60a76f8be8f4795e63fd7b43514b8588a691aa4d (diff) | |
download | ffmpeg-df3fa48288d6e79ac4a193406d514c1dace22397.tar.gz |
AAC encoder: use signed coeffs when measuring IS energy
I/S energy, especially when it comes to phase cancellations,
needs to use signed coefficients as input, yet it was using
abs'd coefficients. That was a slight bug.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/aacenc_is.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/aacenc_is.c b/libavcodec/aacenc_is.c index 46a9773904..473897b1d0 100644 --- a/libavcodec/aacenc_is.c +++ b/libavcodec/aacenc_is.c @@ -120,8 +120,8 @@ void ff_aac_search_for_is(AACEncContext *s, AVCodecContext *avctx, ChannelElemen struct AACISError ph_err1, ph_err2, *best; for (w2 = 0; w2 < sce0->ics.group_len[w]; w2++) { for (i = 0; i < sce0->ics.swb_sizes[g]; i++) { - float coef0 = fabsf(sce0->coeffs[start+(w+w2)*128+i]); - float coef1 = fabsf(sce1->coeffs[start+(w+w2)*128+i]); + float coef0 = sce0->coeffs[start+(w+w2)*128+i]; + float coef1 = sce1->coeffs[start+(w+w2)*128+i]; ener0 += coef0*coef0; ener1 += coef1*coef1; ener01 += (coef0 + coef1)*(coef0 + coef1); |