summaryrefslogtreecommitdiffstats
path: root/libavcodec/aacpsy.c
diff options
context:
space:
mode:
authorClaudio Freire <klaussfreire@gmail.com>2016-04-05 04:03:05 -0300
committerClaudio Freire <klaussfreire@gmail.com>2016-04-05 04:03:05 -0300
commit7d49abdf4750d63cd9bf71235d6f064152310fff (patch)
treebdc1c393d58f87a3e66787359391ed2d23cc4689 /libavcodec/aacpsy.c
parenta07934d51b40b0f48be531a359d39c091c414643 (diff)
downloadffmpeg-streaming-7d49abdf4750d63cd9bf71235d6f064152310fff.zip
ffmpeg-streaming-7d49abdf4750d63cd9bf71235d6f064152310fff.tar.gz
AAC encoder: fix filling of wi.clipping array
Fill all windows in all window groups instead of only the first window of each group. Also avoid uninitialized access of window_type.
Diffstat (limited to 'libavcodec/aacpsy.c')
-rw-r--r--libavcodec/aacpsy.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c
index 0898baf..7453f2d 100644
--- a/libavcodec/aacpsy.c
+++ b/libavcodec/aacpsy.c
@@ -685,7 +685,7 @@ static void psy_3gpp_analyze_channel(FFPsyContext *ctx, int channel,
band->thr_quiet = band->thr = FFMAX(band->thr, coeffs[g].ath);
//5.4.2.5 "Pre-echo control"
- if (!(wi->window_type[0] == LONG_STOP_SEQUENCE || (wi->window_type[1] == LONG_START_SEQUENCE && !w)))
+ if (!(wi->window_type[0] == LONG_STOP_SEQUENCE || (!w && wi->window_type[1] == LONG_START_SEQUENCE)))
band->thr = FFMAX(PSY_3GPP_RPEMIN*band->thr, FFMIN(band->thr,
PSY_3GPP_RPELEV*pch->prev_band[w+g].thr_quiet));
@@ -1018,9 +1018,10 @@ static FFPsyWindowInfo psy_lame_window(FFPsyContext *ctx, const float *audio,
for (i = 0; i < 8; i += wi.grouping[i]) {
int w;
float clipping = 0.0f;
- for (w = 0; w < wi.grouping[i] && !clipping; w++)
+ for (w = 0; w < wi.grouping[i]; w++)
clipping = FFMAX(clipping, clippings[i+w]);
- wi.clipping[i] = clipping;
+ for (w = 0; w < wi.grouping[i]; w++)
+ wi.clipping[i+w] = clipping;
}
}
OpenPOWER on IntegriCloud