[soc]: r2963 - aacenc/aacpsy.c
Author: kostya Date: Thu Jul 31 19:04:08 2008 New Revision: 2963 Log: Scalefactors limit should be calculated and applied over full frame, not an individual window Modified: aacenc/aacpsy.c Modified: aacenc/aacpsy.c ============================================================================== --- aacenc/aacpsy.c (original) +++ aacenc/aacpsy.c Thu Jul 31 19:04:08 2008 @@ -745,21 +745,25 @@ static void psy_3gpp_process(AACPsyConte cpe->ch[ch].sf_idx[w][g] = av_clip(cpe->ch[ch].sf_idx[w][g], prev_scale - SCALE_MAX_DIFF, prev_scale + SCALE_MAX_DIFF); prev_scale = cpe->ch[ch].sf_idx[w][g]; } + } //limit scalefactors + for(w = 0; w < cpe->ch[ch].ics.num_windows; w++) for(g = 0; g < cpe->ch[ch].ics.num_swb; g++){ if(cpe->ch[ch].zeroes[w][g]) continue; min_scale = FFMIN(min_scale, cpe->ch[ch].sf_idx[w][g]); } + for(w = 0; w < cpe->ch[ch].ics.num_windows; w++) for(g = 0; g < cpe->ch[ch].ics.num_swb; g++){ if(cpe->ch[ch].zeroes[w][g]) continue; cpe->ch[ch].sf_idx[w][g] = FFMIN(cpe->ch[ch].sf_idx[w][g], min_scale + SCALE_MAX_DIFF); } + for(w = 0; w < cpe->ch[ch].ics.num_windows; w++) for(g = 0; g < cpe->ch[ch].ics.num_swb; g++){ if(cpe->ch[ch].zeroes[w][g]) continue; cpe->ch[ch].sf_idx[w][g] = av_clip(SCALE_ONE_POS + cpe->ch[ch].sf_idx[w][g], 0, SCALE_MAX_POS); if(!cpe->ch[ch].gain) cpe->ch[ch].gain = cpe->ch[ch].sf_idx[w][g]; } - } + //adjust scalefactors for window groups for(w = 0; w < cpe->ch[ch].ics.num_windows - 1; w++){ int min_scale = 256;
participants (1)
-
kostya