Or, I was originally thinking: rice_parameter = 0; k = partition_samples; if (k < mean) { int n = mean - k; rice_parameter += n; k <<= n; }
(sorry for the hasty post) On Oct 11, 2013, at 10:34, Brian Willoughby wrote: > Hmm, maybe I'm missing something, but what about this: > > rice_parameter = 0; k = partition_samples; > int n = mean - k; > if (n > 0) { > rice_parameter += n; > k <<= n; > } > > I've not looked at this code in its context within stream_encoder.c, > so it's easily possible that I left out something. > > Brian Willoughby > Sound Consulting > > > On Oct 9, 2013, at 08:54, lvqcl wrote: >> MSVS profiler shows that the following code in stream_encoder.c takes >> several percent of CPU time: >> >> for(rice_parameter = 0, k = partition_samples; k < mean; >> rice_parameter++, k <<= 1) >> ; >> >> this code is equivalent to: >> >> rice_parameter = 0; k = partition_samples; >> while(k < mean) { >> rice_parameter++; k <<= 1; >> } >> >> The idea was to accelerate it: >> >> rice_parameter = 0; k = partition_samples; >> while(k*2 < mean) { >> rice_parameter+=2; k <<= 2; >> } >> while(k < mean) { >> rice_parameter++; k <<= 1; >> } >> >> or: >> rice_parameter = 0; k = partition_samples; >> while(k*4 < mean) { >> rice_parameter+=3; k <<= 3; >> } >> while(k < mean) { >> rice_parameter++; k <<= 1; >> } _______________________________________________ flac-dev mailing list flac-dev@xiph.org http://lists.xiph.org/mailman/listinfo/flac-dev