diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-04-01 02:55:29 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-04-01 02:58:15 +0200 |
commit | 7ac167493e5404fd2d3f307d02127f23fca970f0 (patch) | |
tree | bea8a71cd59b1ea9a63692f7df1bdedb8446a9c1 /libavcodec/costablegen.c | |
parent | 859676dd426e7051b41b174886e6e64271e93cdc (diff) | |
parent | e006d71fa849542eb27146efac629288703b3d75 (diff) | |
download | ffmpeg-7ac167493e5404fd2d3f307d02127f23fca970f0.tar.gz |
Merge remote-tracking branch 'newdev/master'
* newdev/master:
mpegts: propagate avio EOF in read_packet()
configure: Initial support for --target-os=symbian
Fixed-point FFT and MDCT
Include dependencies for test programs
ac3enc: simplify sym_quant()
flvdec: read index stored in the 'keyframes' tag.
mov: Add support for zero-sized stsc runs.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/costablegen.c')
-rw-r--r-- | libavcodec/costablegen.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/libavcodec/costablegen.c b/libavcodec/costablegen.c index 545fe7f998..6e818252f7 100644 --- a/libavcodec/costablegen.c +++ b/libavcodec/costablegen.c @@ -29,14 +29,33 @@ #endif #define BITS 16 #define FLOATFMT "%.18e" +#define FIXEDFMT "%6d" + +static int clip_f15(int v) +{ + return v < -32767 ? -32767 : + v > 32767 ? 32767 : + v; +} + +static void printval(double val, int fixed) +{ + if (fixed) + printf(" "FIXEDFMT",", clip_f15(lrint(val * (double)(1<<15)))); + else + printf(" "FLOATFMT",", val); + +} int main(int argc, char *argv[]) { int i, j; - int do_sin = argc == 2 && !strcmp(argv[1], "sin"); + int do_sin = argc > 1 && !strcmp(argv[1], "sin"); + int fixed = argc > 2 && !strcmp(argv[2], "fixed"); double (*func)(double) = do_sin ? sin : cos; printf("/* This file was generated by libavcodec/costablegen */\n"); + printf("#define CONFIG_FFT_FLOAT %d\n", !fixed); printf("#include \"libavcodec/%s\"\n", do_sin ? "rdft.h" : "fft.h"); for (i = 4; i <= BITS; i++) { int m = 1 << i; @@ -46,11 +65,12 @@ int main(int argc, char *argv[]) int idx = j > m/4 ? m/2 - j : j; if (do_sin && j >= m/4) idx = m/4 - j; - printf(" "FLOATFMT",", func(idx*freq)); + printval(func(idx*freq), fixed); if ((j & 3) == 3) printf("\n "); } - printf(" "FLOATFMT"\n};\n", func(do_sin ? -(m/4 - 1)*freq : freq)); + printval(func(do_sin ? -(m/4 - 1)*freq : freq), fixed); + printf("\n};\n"); } return 0; } |