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