@ -554,10 +554,11 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
if ( ! frame )
la = NULL ;
if ( tag = = TYPE_LFE ) {
wi [ ch ] . window_type [ 0 ] = ONLY_LONG_SEQUENCE ;
wi [ ch ] . window_type [ 0 ] = wi [ ch ] . window_type [ 1 ] = ONLY_LONG_SEQUENCE ;
wi [ ch ] . window_shape = 0 ;
wi [ ch ] . num_windows = 1 ;
wi [ ch ] . grouping [ 0 ] = 1 ;
wi [ ch ] . clipping [ 0 ] = 0 ;
/* Only the lowest 12 coefficients are used in a LFE channel.
* The expression below results in only the bottom 8 coefficients
@ -582,9 +583,22 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
ics - > tns_max_bands = wi [ ch ] . window_type [ 0 ] = = EIGHT_SHORT_SEQUENCE ?
ff_tns_max_bands_128 [ s - > samplerate_index ] :
ff_tns_max_bands_1024 [ s - > samplerate_index ] ;
clip_avoidance_factor = 0.0f ;
for ( w = 0 ; w < ics - > num_windows ; w + + )
ics - > group_len [ w ] = wi [ ch ] . grouping [ w ] ;
/* Calculate input sample maximums and evaluate clipping risk */
clip_avoidance_factor = 0.0f ;
for ( w = 0 ; w < ics - > num_windows ; w + + ) {
const float * wbuf = overlap + w * 128 ;
const int wlen = 2048 / ics - > num_windows ;
float max = 0 ;
int j ;
/* mdct input is 2 * output */
for ( j = 0 ; j < wlen ; j + + )
max = FFMAX ( max , fabsf ( wbuf [ j ] ) ) ;
wi [ ch ] . clipping [ w ] = max ;
}
for ( w = 0 ; w < ics - > num_windows ; w + + ) {
if ( wi [ ch ] . clipping [ w ] > CLIP_AVOIDANCE_FACTOR ) {
ics - > window_clipping [ w ] = 1 ;