[FFmpeg-devel] Review request - ra288.{c,h} ra144.{c,h}

Vitor Sessak vitor1001
Tue Aug 5 06:24:32 CEST 2008


Michael Niedermayer wrote:
> On Tue, Jul 29, 2008 at 08:20:45PM +0200, Vitor Sessak wrote:
>> Hi,
>>
>> Those four files never passed a review. I've just finished cleaning them 
>> up, so if anyone wants to review them (Michael already said he will), 
>> now is time.
> 
> heres 288
> 
> [...]
>> static void decode(RA288Context *ractx, float gain, int cb_coef)

[...]

> 
>> /**
>>  * Converts autocorrelation coefficients to LPC coefficients using the
>>  * Levinson-Durbin algorithm. See blocks 37 and 50 of the G.728 specification.
>>  *
>>  * @return 0 if success, -1 if fail
>>  */
>> static int eval_lpc_coeffs(const float *in, float *tgt, int n)
>> {
>>     int i, j;
>>     double f0, f1, f2;
>>
>>     if (in[n] == 0)
>>         return -1;
>>
>>     if ((f0 = *in) <= 0)
>>         return -1;
>>
>>     in--; // To avoid a -1 subtraction in the inner loop
>>
>>     for (i=1; i <= n; i++) {
>>         f1 = in[i+1];
>>
>>         for (j=0; j < i - 1; j++)
>>             f1 += in[i-j]*tgt[j];
>>
>>         tgt[i-1] = f2 = -f1/f0;
>>         for (j=0; j < i >> 1; j++) {
>>             float temp = tgt[j] + tgt[i-j-2]*f2;
>>             tgt[i-j-2] += tgt[j]*f2;
>>             tgt[j] = temp;
>>         }
>>         if ((f0 += f1*f2) < 0)
>>             return -1;
>>     }
>>
>>     return 0;
>> }
> 
> duplicate of compute_lpc_coefs() ?

Yes, the two functions are practically identical, but 
compute_lpc_coefs() use doubles and ra288 uses floats.

Justin: does FLAC really need double precision or that was just an 
arbitrary choice?

Michael: If both are needed, Michael, are you ok with a macro?

-Vitor




More information about the ffmpeg-devel mailing list