在量化的時候發現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,