OLD | NEW |
1 /* | 1 /* |
2 * Generate a header file for hardcoded ff_cos_* tables | 2 * Generate a header file for hardcoded ff_cos_* tables |
3 * | 3 * |
4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> |
5 * | 5 * |
6 * This file is part of FFmpeg. | 6 * This file is part of FFmpeg. |
7 * | 7 * |
8 * FFmpeg is free software; you can redistribute it and/or | 8 * FFmpeg is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 19 matching lines...) Expand all Loading... |
30 #define BITS 16 | 30 #define BITS 16 |
31 #define FLOATFMT "%.18e" | 31 #define FLOATFMT "%.18e" |
32 | 32 |
33 int main(int argc, char *argv[]) | 33 int main(int argc, char *argv[]) |
34 { | 34 { |
35 int i, j; | 35 int i, j; |
36 int do_sin = argc == 2 && !strcmp(argv[1], "sin"); | 36 int do_sin = argc == 2 && !strcmp(argv[1], "sin"); |
37 double (*func)(double) = do_sin ? sin : cos; | 37 double (*func)(double) = do_sin ? sin : cos; |
38 | 38 |
39 printf("/* This file was generated by libavcodec/costablegen */\n"); | 39 printf("/* This file was generated by libavcodec/costablegen */\n"); |
40 printf("#include \"libavcodec/dsputil.h\"\n"); | 40 printf("#include \"libavcodec/fft.h\"\n"); |
41 for (i = 4; i <= BITS; i++) { | 41 for (i = 4; i <= BITS; i++) { |
42 int m = 1 << i; | 42 int m = 1 << i; |
43 double freq = 2*M_PI/m; | 43 double freq = 2*M_PI/m; |
44 printf("%s(%i) = {\n ", do_sin ? "SINTABLE" : "COSTABLE", m); | 44 printf("%s(%i) = {\n ", do_sin ? "SINTABLE" : "COSTABLE", m); |
45 for (j = 0; j < m/2 - 1; j++) { | 45 for (j = 0; j < m/2 - 1; j++) { |
46 int idx = j > m/4 ? m/2 - j : j; | 46 int idx = j > m/4 ? m/2 - j : j; |
47 if (do_sin && j >= m/4) | 47 if (do_sin && j >= m/4) |
48 idx = m/4 - j; | 48 idx = m/4 - j; |
49 printf(" "FLOATFMT",", func(idx*freq)); | 49 printf(" "FLOATFMT",", func(idx*freq)); |
50 if ((j & 3) == 3) | 50 if ((j & 3) == 3) |
51 printf("\n "); | 51 printf("\n "); |
52 } | 52 } |
53 printf(" "FLOATFMT"\n};\n", func(do_sin ? -(m/4 - 1)*freq : freq)); | 53 printf(" "FLOATFMT"\n};\n", func(do_sin ? -(m/4 - 1)*freq : freq)); |
54 } | 54 } |
55 return 0; | 55 return 0; |
56 } | 56 } |
OLD | NEW |