[flac-dev] PATCH for rice_parameter calculation

Brian Willoughby brianw at sounds.wa.com
Fri Oct 11 10:47:29 PDT 2013


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;
>>     }



More information about the flac-dev mailing list