mirror of https://github.com/FFmpeg/FFmpeg.git
Originally committed as revision 21108 to svn://svn.ffmpeg.org/ffmpeg/trunkrelease/0.6
parent
b090930d43
commit
14b8607065
14 changed files with 152 additions and 43 deletions
@ -0,0 +1,61 @@ |
|||||||
|
/*
|
||||||
|
* Generate a header file for hardcoded MDCT tables |
||||||
|
* |
||||||
|
* Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> |
||||||
|
* |
||||||
|
* This file is part of FFmpeg. |
||||||
|
* |
||||||
|
* FFmpeg is free software; you can redistribute it and/or |
||||||
|
* modify it under the terms of the GNU Lesser General Public |
||||||
|
* License as published by the Free Software Foundation; either |
||||||
|
* version 2.1 of the License, or (at your option) any later version. |
||||||
|
* |
||||||
|
* FFmpeg is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||||
|
* Lesser General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU Lesser General Public |
||||||
|
* License along with FFmpeg; if not, write to the Free Software |
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <stdlib.h> |
||||||
|
#define CONFIG_HARDCODED_TABLES 0 |
||||||
|
#define av_cold |
||||||
|
#define SINETABLE_CONST |
||||||
|
#define SINETABLE(size) \ |
||||||
|
float ff_sine_##size[size] |
||||||
|
#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) |
||||||
|
#ifndef M_PI |
||||||
|
#define M_PI 3.14159265358979323846 |
||||||
|
#endif |
||||||
|
#include "mdct_tablegen.h" |
||||||
|
#include "tableprint.h" |
||||||
|
|
||||||
|
void tableinit(void) |
||||||
|
{ |
||||||
|
int i; |
||||||
|
for (i = 5; i <= 12; i++) |
||||||
|
ff_init_ff_sine_windows(i); |
||||||
|
} |
||||||
|
|
||||||
|
#define SINE_TABLE_DEF(size) \ |
||||||
|
{ \
|
||||||
|
"SINETABLE("#size")", \
|
||||||
|
write_float_array, \
|
||||||
|
ff_sine_##size, \
|
||||||
|
size \
|
||||||
|
}, |
||||||
|
|
||||||
|
const struct tabledef tables[] = { |
||||||
|
SINE_TABLE_DEF( 32) |
||||||
|
SINE_TABLE_DEF( 64) |
||||||
|
SINE_TABLE_DEF( 128) |
||||||
|
SINE_TABLE_DEF( 256) |
||||||
|
SINE_TABLE_DEF( 512) |
||||||
|
SINE_TABLE_DEF(1024) |
||||||
|
SINE_TABLE_DEF(2048) |
||||||
|
SINE_TABLE_DEF(4096) |
||||||
|
{ NULL } |
||||||
|
}; |
@ -0,0 +1,59 @@ |
|||||||
|
/*
|
||||||
|
* Header file for hardcoded MDCT tables |
||||||
|
* |
||||||
|
* Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> |
||||||
|
* |
||||||
|
* This file is part of FFmpeg. |
||||||
|
* |
||||||
|
* FFmpeg is free software; you can redistribute it and/or |
||||||
|
* modify it under the terms of the GNU Lesser General Public |
||||||
|
* License as published by the Free Software Foundation; either |
||||||
|
* version 2.1 of the License, or (at your option) any later version. |
||||||
|
* |
||||||
|
* FFmpeg is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||||
|
* Lesser General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU Lesser General Public |
||||||
|
* License along with FFmpeg; if not, write to the Free Software |
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <assert.h> |
||||||
|
// do not use libavutil/mathematics.h since this is compiled both
|
||||||
|
// for the host and the target and config.h is only valid for the target
|
||||||
|
#include <math.h> |
||||||
|
|
||||||
|
#if !CONFIG_HARDCODED_TABLES |
||||||
|
SINETABLE( 32); |
||||||
|
SINETABLE( 64); |
||||||
|
SINETABLE( 128); |
||||||
|
SINETABLE( 256); |
||||||
|
SINETABLE( 512); |
||||||
|
SINETABLE(1024); |
||||||
|
SINETABLE(2048); |
||||||
|
SINETABLE(4096); |
||||||
|
#else |
||||||
|
#include "mdct_tables.h" |
||||||
|
#endif |
||||||
|
|
||||||
|
SINETABLE_CONST float * const ff_sine_windows[] = { |
||||||
|
NULL, NULL, NULL, NULL, NULL, // unused
|
||||||
|
ff_sine_32 , ff_sine_64 , |
||||||
|
ff_sine_128, ff_sine_256, ff_sine_512, ff_sine_1024, ff_sine_2048, ff_sine_4096 |
||||||
|
}; |
||||||
|
|
||||||
|
// Generate a sine window.
|
||||||
|
av_cold void ff_sine_window_init(float *window, int n) { |
||||||
|
int i; |
||||||
|
for(i = 0; i < n; i++) |
||||||
|
window[i] = sinf((i + 0.5) * (M_PI / (2.0 * n))); |
||||||
|
} |
||||||
|
|
||||||
|
av_cold void ff_init_ff_sine_windows(int index) { |
||||||
|
assert(index >= 0 && index < FF_ARRAY_ELEMS(ff_sine_windows)); |
||||||
|
#if !CONFIG_HARDCODED_TABLES |
||||||
|
ff_sine_window_init(ff_sine_windows[index], 1 << index); |
||||||
|
#endif |
||||||
|
} |
Loading…
Reference in new issue