[FFmpeg-devel] [PATCH v2 1/2] avcodec: add Dolby E decoder

Moritz Barsnick barsnick at gmx.net
Wed Jul 19 14:48:47 EEST 2017


On Sat, Jul 01, 2017 at 17:03:46 +0300, foo86 wrote:
> +static av_cold void init_tables(void)
> +{
> +    int i, j;
> +
> +    for (i = 1; i < 17; i++)
> +        mantissa_tab1[i][0] = 1.0 / (1 << i - 1);
> +
> +    for (i = 2; i < 16; i++) {
> +        mantissa_tab1[i][1] = 1.0  / ((1 << i) - 1);
> +        mantissa_tab1[i][2] = 0.5  / ((1 << i) - 1);
> +        mantissa_tab1[i][3] = 0.25 / ((1 << i) - 1);
> +    }
> +
> +    mantissa_tab1[i][1] = 0.5   / (1 << 15);
> +    mantissa_tab1[i][2] = 0.75  / (1 << 15);
> +    mantissa_tab1[i][3] = 0.875 / (1 << 15);
> +
> +    for (i = 1; i < 17; i++) {
> +        mantissa_tab2[i][1] = mantissa_tab1[i][0] * 0.5;
> +        mantissa_tab2[i][2] = mantissa_tab1[i][0] * 0.75;
> +        mantissa_tab2[i][3] = mantissa_tab1[i][0] * 0.875;
> +        for (j = 1; j < 4; j++)
> +            mantissa_tab3[i][j] = 1.0 / (1 << i) + 1.0 / (1 << j) - 1.0 / (1 << i + j);
> +    }
> +
> +    mantissa_tab3[1][3] = 0.6875;
> +
> +    for (i = 0; i < 25; i++) {
> +        exponent_tab[i * 2    ] = 1.0       / (1 << i);
> +        exponent_tab[i * 2 + 1] = M_SQRT1_2 / (1 << i);
> +    }

The literal numerical constants used in the quoted section should
probably get 'f' suffixes, to force single precision operations. (Not
that it matters much in the init code.)

Moritz


More information about the ffmpeg-devel mailing list