在量化的时候发现max_bits重复计算了4次。
将①提到外部②的位置,每个Frame只需要计算一次就可以了,不必重复计算。
max_bits = mean_bits / config.wave.channels; ----- ②
/* */
for( gr=2; gr--; )
{
for( ch=config.wave.channels; ch--; )
{
cod_info = (gr_info *)&(side_info->gr[gr].ch[ch]);
/* calculation of number of available bit( per granule )
* 计算每个颗粒可用的bit数, 量化成0的部分则不编码进去.
* 在一个Frame中重复计算了4次, 可以提到for外面去
*/
//max_bits = mean_bits / config.wave.channels; ---- ①
. . . . . .
}
}
41.5M的PCM信号 原本消耗53s, 经优化消耗为51s,