comparison mdct.c @ 6139:5077d1562573 libavcodec

Make the Kaiser-Bessel window generator a common function Patch by Robert Swain, robert d swain a gmail d com
author andoma
date Sat, 12 Jan 2008 11:11:19 +0000
parents c8c591fe26f8
children a35b838ab955
comparison
equal deleted inserted replaced
6138:c7a61f83de73 6139:5077d1562573
22 22
23 /** 23 /**
24 * @file mdct.c 24 * @file mdct.c
25 * MDCT/IMDCT transforms. 25 * MDCT/IMDCT transforms.
26 */ 26 */
27
28 // Generate a Kaiser-Bessel Derived Window.
29 void ff_kbd_window_init(float *window)
30 {
31 int i, j;
32 double sum = 0.0, bessel, tmp;
33 double local_window[256];
34 double alpha2 = (5.0 * M_PI / 256.0) * (5.0 * M_PI / 256.0);
35
36 for (i = 0; i < 256; i++) {
37 tmp = i * (256 - i) * alpha2;
38 bessel = 1.0;
39 for (j = 100; j > 0; j--) /* default to 100 iterations */
40 bessel = bessel * tmp / (j * j) + 1;
41 sum += bessel;
42 local_window[i] = sum;
43 }
44
45 sum++;
46 for (i = 0; i < 256; i++)
47 window[i] = sqrt(local_window[i] / sum);
48 }
27 49
28 /** 50 /**
29 * init MDCT or IMDCT computation. 51 * init MDCT or IMDCT computation.
30 */ 52 */
31 int ff_mdct_init(MDCTContext *s, int nbits, int inverse) 53 int ff_mdct_init(MDCTContext *s, int nbits, int inverse)