Mercurial > libavcodec.hg
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 } |