[FFmpeg-devel] [PATCH] RDFT for Bink audio

Alex Converse alex.converse
Thu Jan 15 17:08:22 CET 2009


On Thu, Jan 15, 2009 at 4:25 AM, Benjamin Larsson <banan at ludd.ltu.se> wrote:
> Alex Converse wrote:
>> Hi,
>>
>> Attached is an implementation of the Real Discrete Fourier Transform as
>> required for Bink Audio.
>>
>> Regards,
>> Alex Converse
>>
>
> Hi, Bink audio has 2 modes:
>
> +        if (s->use_dct)
> +            ff_dct_calc (&s->trans.dct,  coeffs);
> +        else
> +            ff_rdft_calc(&s->trans.rdft, coeffs);
>
>
>
> Did you implement both modes in this patch ? To me it looks like we also
> need a dct function also.
>

Separate transform will be in a separate patch.

> +        ev.re =  k1*(data[i1  ]+data[i2  ]);
> +        od.im =  k2*(data[i1  ]-data[i2  ]);
> +        ev.im =  k1*(data[i1+1]-data[i2+1]);
> +        od.re = -k2*(data[i1+1]+data[i2+1]);
> +        /* Apply twiddle factors to the odd FFT and add to the even FFT */
> +        data[i1  ] =  ev.re + od.re*tcos[i] - od.im*tsin[i];
> +        data[i1+1] =  ev.im + od.im*tcos[i] + od.re*tsin[i];
> +        data[i2  ] =  ev.re - od.re*tcos[i] + od.im*tsin[i];
> +        data[i2+1] = -ev.im + od.im*tcos[i] + od.re*tsin[i];
>
>
> That part of the code looked like some code we have in the qdm2.c
> decoder ? Can you look and see if it matches? I have always wondered
> what kind of transform it was.
>

It is clearly a IRDFT with something weird going on with the 0 and N/2
points. Do you know anything about the genesis of that code that isn't
in your pdf? The n2 term is clearly not passed to the FFT at all.

> Code wise other then some strange indentation in the struct it looked ok.
>

Some tabs crept in, try this.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rdft-fix.diff
Type: application/octet-stream
Size: 5823 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090115/67734b5f/attachment.obj>



More information about the ffmpeg-devel mailing list