Mercurial > libavcodec.hg
comparison mdct_tablegen.h @ 10827:3d011a01a6a0 libavcodec
Add support for hard-coded MDCT-related ff_sine_windows tables.
author | reimar |
---|---|
date | Sat, 09 Jan 2010 13:28:04 +0000 |
parents | |
children | aa3997d8eee7 |
comparison
equal
deleted
inserted
replaced
10826:59c35482189e | 10827:3d011a01a6a0 |
---|---|
1 /* | |
2 * Header file for hardcoded MDCT tables | |
3 * | |
4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | |
5 * | |
6 * This file is part of FFmpeg. | |
7 * | |
8 * FFmpeg is free software; you can redistribute it and/or | |
9 * modify it under the terms of the GNU Lesser General Public | |
10 * License as published by the Free Software Foundation; either | |
11 * version 2.1 of the License, or (at your option) any later version. | |
12 * | |
13 * FFmpeg is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * Lesser General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU Lesser General Public | |
19 * License along with FFmpeg; if not, write to the Free Software | |
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |
21 */ | |
22 | |
23 #include <assert.h> | |
24 // do not use libavutil/mathematics.h since this is compiled both | |
25 // for the host and the target and config.h is only valid for the target | |
26 #include <math.h> | |
27 | |
28 #if !CONFIG_HARDCODED_TABLES | |
29 SINETABLE( 32); | |
30 SINETABLE( 64); | |
31 SINETABLE( 128); | |
32 SINETABLE( 256); | |
33 SINETABLE( 512); | |
34 SINETABLE(1024); | |
35 SINETABLE(2048); | |
36 SINETABLE(4096); | |
37 #else | |
38 #include "mdct_tables.h" | |
39 #endif | |
40 | |
41 SINETABLE_CONST float * const ff_sine_windows[] = { | |
42 NULL, NULL, NULL, NULL, NULL, // unused | |
43 ff_sine_32 , ff_sine_64 , | |
44 ff_sine_128, ff_sine_256, ff_sine_512, ff_sine_1024, ff_sine_2048, ff_sine_4096 | |
45 }; | |
46 | |
47 // Generate a sine window. | |
48 av_cold void ff_sine_window_init(float *window, int n) { | |
49 int i; | |
50 for(i = 0; i < n; i++) | |
51 window[i] = sinf((i + 0.5) * (M_PI / (2.0 * n))); | |
52 } | |
53 | |
54 av_cold void ff_init_ff_sine_windows(int index) { | |
55 assert(index >= 0 && index < FF_ARRAY_ELEMS(ff_sine_windows)); | |
56 #if !CONFIG_HARDCODED_TABLES | |
57 ff_sine_window_init(ff_sine_windows[index], 1 << index); | |
58 #endif | |
59 } |