/src/ffmpeg/libavcodec/sinewin_fixed_tablegen.h
Line | Count | Source |
1 | | /* |
2 | | * Header file for hardcoded sine windows |
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 | | #ifndef AVCODEC_SINEWIN_FIXED_TABLEGEN_H |
24 | | #define AVCODEC_SINEWIN_FIXED_TABLEGEN_H |
25 | | |
26 | | #ifdef BUILD_TABLES |
27 | | #undef DECLARE_ALIGNED |
28 | | #define DECLARE_ALIGNED(align, type, name) type name |
29 | | #else |
30 | | #include "libavutil/mem_internal.h" |
31 | | #endif |
32 | | |
33 | | #define SINETABLE(size) \ |
34 | | static SINETABLE_CONST DECLARE_ALIGNED(32, int, sine_##size##_fixed)[size] |
35 | | |
36 | | #if CONFIG_HARDCODED_TABLES |
37 | | #define init_sine_windows_fixed() |
38 | | #define SINETABLE_CONST const |
39 | | #include "libavcodec/sinewin_fixed_tables.h" |
40 | | #else |
41 | | // do not use libavutil/libm.h since this is compiled both |
42 | | // for the host and the target and config.h is only valid for the target |
43 | | #include <math.h> |
44 | | #include "libavutil/attributes.h" |
45 | | |
46 | | #define SINETABLE_CONST |
47 | | SINETABLE( 96); |
48 | | SINETABLE( 120); |
49 | | SINETABLE( 128); |
50 | | SINETABLE( 480); |
51 | | SINETABLE( 512); |
52 | | SINETABLE( 768); |
53 | | SINETABLE( 960); |
54 | | SINETABLE(1024); |
55 | | |
56 | 4.08k | #define SIN_FIX(a) (int)floor((a) * 0x80000000 + 0.5) |
57 | | |
58 | | // Generate a sine window. |
59 | | static av_cold void sine_window_init_fixed(int *window, int n) |
60 | 8 | { |
61 | 4.09k | for (int i = 0; i < n; i++) |
62 | 4.08k | window[i] = SIN_FIX(sinf((i + 0.5) * (M_PI / (2.0 * n)))); |
63 | 8 | } |
64 | | |
65 | | static av_cold void init_sine_windows_fixed(void) |
66 | 1 | { |
67 | 1 | sine_window_init_fixed(sine_96_fixed, 96); |
68 | 1 | sine_window_init_fixed(sine_120_fixed, 120); |
69 | 1 | sine_window_init_fixed(sine_128_fixed, 128); |
70 | 1 | sine_window_init_fixed(sine_480_fixed, 480); |
71 | 1 | sine_window_init_fixed(sine_512_fixed, 512); |
72 | 1 | sine_window_init_fixed(sine_768_fixed, 768); |
73 | 1 | sine_window_init_fixed(sine_960_fixed, 960); |
74 | 1 | sine_window_init_fixed(sine_1024_fixed, 1024); |
75 | 1 | } |
76 | | #endif /* CONFIG_HARDCODED_TABLES */ |
77 | | #endif /* AVCODEC_SINEWIN_FIXED_TABLEGEN_H */ |