annotate mpegaudio_tablegen.h @ 10576:64c8bc5340bd libavcodec

Revert "Add required header #include to fix 'make checkheaders'." config.h must not be included in that file. The table generator runs on the host system, but config.h describes the target.
author mru
date Thu, 26 Nov 2009 10:06:41 +0000
parents bcd863ec8208
children eb9e142ea51f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
1 /*
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
2 * Header file for hardcoded mpegaudiodec tables
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
3 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
5 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
6 * This file is part of FFmpeg.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
7 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
12 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
16 * Lesser General Public License for more details.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
17 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
21 */
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
22
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
23 #ifndef MPEGAUDIO_TABLEGEN_H
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
24 #define MPEGAUDIO_TABLEGEN_H
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
25
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
26 #include <stdint.h>
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
27 // do not use libavutil/mathematics.h since this is compiled both
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
28 // for the host and the target and config.h is only valid for the target
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
29 #include <math.h>
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
30
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
31 #define TABLE_4_3_SIZE (8191 + 16)*4
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
32 #if CONFIG_HARDCODED_TABLES
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
33 #define mpegaudio_tableinit()
10473
36a16fb5c497 Fix out-of-tree builds with --enable-hardcoded-tables
reimar
parents: 10470
diff changeset
34 #include "libavcodec/mpegaudio_tables.h"
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
35 #else
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
36 static int8_t table_4_3_exp[TABLE_4_3_SIZE];
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
37 static uint32_t table_4_3_value[TABLE_4_3_SIZE];
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
38 static uint32_t exp_table[512];
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
39 static uint32_t expval_table[512][16];
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
40
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
41 static void mpegaudio_tableinit(void)
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
42 {
10497
8b4b365d08f5 Simpliy exp*table init, based on patch by reimar.
michael
parents: 10473
diff changeset
43 int i, value, exponent;
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
44 for (i = 1; i < TABLE_4_3_SIZE; i++) {
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
45 double value = i / 4;
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
46 double f, fm;
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
47 int e, m;
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
48 f = value * cbrtf(value) * pow(2, (i & 3) * 0.25);
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
49 fm = frexp(f, &e);
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
50 m = (uint32_t)(fm * (1LL << 31) + 0.5);
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
51 e += FRAC_BITS - 31 + 5 - 100;
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
52
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
53 /* normalized to FRAC_BITS */
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
54 table_4_3_value[i] = m;
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
55 table_4_3_exp[i] = -e;
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
56 }
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
57 for (exponent = 0; exponent < 512; exponent++) {
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
58 for (value = 0; value < 16; value++) {
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
59 double f = (double)value * cbrtf(value) * pow(2, (exponent - 400) * 0.25 + FRAC_BITS + 5);
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
60 expval_table[exponent][value] = llrint(f);
10497
8b4b365d08f5 Simpliy exp*table init, based on patch by reimar.
michael
parents: 10473
diff changeset
61 }
10575
bcd863ec8208 cosmetics: K&R style, prettyprinting
diego
parents: 10570
diff changeset
62 exp_table[exponent] = expval_table[exponent][1];
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
63 }
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
64 }
10470
08be6978ac8e 10l, fix incorrect endif comment.
reimar
parents: 10469
diff changeset
65 #endif /* CONFIG_HARDCODED_TABLES */
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
66
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
67 #endif /* MPEGAUDIO_TABLEGEN_H */