comparison dct.c @ 11517:e3b680f6c106 libavcodec

Cosmetics: move ff_dct_init() to the bottom of the file
author vitor
date Sun, 21 Mar 2010 11:28:38 +0000
parents 4b3da727d832
children c4d18d452f82
comparison
equal deleted inserted replaced
11516:628a6ba6a4af 11517:e3b680f6c106
28 */ 28 */
29 29
30 #include <math.h> 30 #include <math.h>
31 #include "libavutil/mathematics.h" 31 #include "libavutil/mathematics.h"
32 #include "fft.h" 32 #include "fft.h"
33
34 av_cold int ff_dct_init(DCTContext *s, int nbits, int inverse)
35 {
36 int n = 1 << nbits;
37 int i;
38
39 s->nbits = nbits;
40 s->inverse = inverse;
41
42 ff_init_ff_cos_tabs(nbits+2);
43
44 s->costab = ff_cos_tabs[nbits+2];
45
46 s->csc2 = av_malloc(n/2 * sizeof(FFTSample));
47
48 if (ff_rdft_init(&s->rdft, nbits, inverse) < 0) {
49 av_free(s->csc2);
50 return -1;
51 }
52
53 for (i = 0; i < n/2; i++)
54 s->csc2[i] = 0.5 / sin((M_PI / (2*n) * (2*i + 1)));
55
56 return 0;
57 }
58 33
59 /* sin((M_PI * x / (2*n)) */ 34 /* sin((M_PI * x / (2*n)) */
60 #define SIN(s,n,x) (s->costab[(n) - (x)]) 35 #define SIN(s,n,x) (s->costab[(n) - (x)])
61 36
62 /* cos((M_PI * x / (2*n)) */ 37 /* cos((M_PI * x / (2*n)) */
131 void ff_dct_calc(DCTContext *s, FFTSample *data) 106 void ff_dct_calc(DCTContext *s, FFTSample *data)
132 { 107 {
133 ff_dct_calc_c(s, data); 108 ff_dct_calc_c(s, data);
134 } 109 }
135 110
111 av_cold int ff_dct_init(DCTContext *s, int nbits, int inverse)
112 {
113 int n = 1 << nbits;
114 int i;
115
116 s->nbits = nbits;
117 s->inverse = inverse;
118
119 ff_init_ff_cos_tabs(nbits+2);
120
121 s->costab = ff_cos_tabs[nbits+2];
122
123 s->csc2 = av_malloc(n/2 * sizeof(FFTSample));
124
125 if (ff_rdft_init(&s->rdft, nbits, inverse) < 0) {
126 av_free(s->csc2);
127 return -1;
128 }
129
130 for (i = 0; i < n/2; i++)
131 s->csc2[i] = 0.5 / sin((M_PI / (2*n) * (2*i + 1)));
132
133 return 0;
134 }
135
136 av_cold void ff_dct_end(DCTContext *s) 136 av_cold void ff_dct_end(DCTContext *s)
137 { 137 {
138 ff_rdft_end(&s->rdft); 138 ff_rdft_end(&s->rdft);
139 av_free(s->csc2); 139 av_free(s->csc2);
140 } 140 }