@ -806,13 +806,18 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx,
for ( g = 0 ; g < sce - > ics . num_swb ; g + + ) {
int prevsc = sce - > sf_idx [ w * 16 + g ] ;
const float * scaled = s - > scoefs + start ;
if ( dists [ w * 16 + g ] > uplims [ w * 16 + g ] & & sce - > sf_idx [ w * 16 + g ] > 60 )
if ( dists [ w * 16 + g ] > uplims [ w * 16 + g ] & & sce - > sf_idx [ w * 16 + g ] > 60 ) {
if ( find_min_book ( find_max_val ( sce - > ics . group_len [ w ] , sce - > ics . swb_sizes [ g ] , scaled ) , sce - > sf_idx [ w * 16 + g ] - 1 ) )
sce - > sf_idx [ w * 16 + g ] - - ;
else //Try to make sure there is some energy in every band
sce - > sf_idx [ w * 16 + g ] - = 2 ;
}
sce - > sf_idx [ w * 16 + g ] = av_clip ( sce - > sf_idx [ w * 16 + g ] , minscaler , minscaler + SCALE_MAX_DIFF ) ;
sce - > sf_idx [ w * 16 + g ] = FFMIN ( sce - > sf_idx [ w * 16 + g ] , 219 ) ;
if ( sce - > sf_idx [ w * 16 + g ] ! = prevsc )
fflag = 1 ;
sce - > band_type [ w * 16 + g ] = find_min_book ( find_max_val ( sce - > ics . group_len [ w ] , sce - > ics . swb_sizes [ g ] , scaled ) , sce - > sf_idx [ w * 16 + g ] ) ;
//av_log(NULL, AV_LOG_ERROR, "w %d swb %2d sf %3d bt %2d dist %f uplim %f ratio %f\n", w, g, sce->sf_idx[w*16+g], sce->band_type[w*16+g], dists[w*16+g], uplims[w*16+g], dists[w*16+g]/uplims[w*16+g]);
start + = sce - > ics . swb_sizes [ g ] ;
}
}