CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
hrydgard

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: hrydgard/ppsspp
Path: blob/master/ext/at3_standalone/aac_defines.h
Views: 1401
1
/*
2
* AAC defines
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVCODEC_AAC_DEFINES_H
22
#define AVCODEC_AAC_DEFINES_H
23
24
#ifndef USE_FIXED
25
#define USE_FIXED 0
26
#endif
27
28
#if USE_FIXED
29
30
#include "libavutil/softfloat.h"
31
32
#define FFT_FLOAT 0
33
#define FFT_FIXED_32 1
34
35
#define AAC_RENAME(x) x ## _fixed
36
#define AAC_RENAME_32(x) x ## _fixed_32
37
typedef int INTFLOAT;
38
typedef int64_t INT64FLOAT;
39
typedef int16_t SHORTFLOAT;
40
typedef SoftFloat AAC_FLOAT;
41
typedef int AAC_SIGNE;
42
#define FIXR(a) ((int)((a) * 1 + 0.5))
43
#define FIXR10(a) ((int)((a) * 1024.0 + 0.5))
44
#define Q23(a) (int)((a) * 8388608.0 + 0.5)
45
#define Q30(x) (int)((x)*1073741824.0 + 0.5)
46
#define Q31(x) (int)((x)*2147483648.0 + 0.5)
47
#define RANGE15(x) x
48
#define GET_GAIN(x, y) (-(y) << (x)) + 1024
49
#define AAC_MUL16(x, y) (int)(((int64_t)(x) * (y) + 0x8000) >> 16)
50
#define AAC_MUL26(x, y) (int)(((int64_t)(x) * (y) + 0x2000000) >> 26)
51
#define AAC_MUL30(x, y) (int)(((int64_t)(x) * (y) + 0x20000000) >> 30)
52
#define AAC_MUL31(x, y) (int)(((int64_t)(x) * (y) + 0x40000000) >> 31)
53
#define AAC_MADD28(x, y, a, b) (int)((((int64_t)(x) * (y)) + \
54
((int64_t)(a) * (b)) + \
55
0x8000000) >> 28)
56
#define AAC_MADD30(x, y, a, b) (int)((((int64_t)(x) * (y)) + \
57
((int64_t)(a) * (b)) + \
58
0x20000000) >> 30)
59
#define AAC_MADD30_V8(x, y, a, b, c, d, e, f) (int)((((int64_t)(x) * (y)) + \
60
((int64_t)(a) * (b)) + \
61
((int64_t)(c) * (d)) + \
62
((int64_t)(e) * (f)) + \
63
0x20000000) >> 30)
64
#define AAC_MSUB30(x, y, a, b) (int)((((int64_t)(x) * (y)) - \
65
((int64_t)(a) * (b)) + \
66
0x20000000) >> 30)
67
#define AAC_MSUB30_V8(x, y, a, b, c, d, e, f) (int)((((int64_t)(x) * (y)) + \
68
((int64_t)(a) * (b)) - \
69
((int64_t)(c) * (d)) - \
70
((int64_t)(e) * (f)) + \
71
0x20000000) >> 30)
72
#define AAC_MSUB31_V3(x, y, z) (int)((((int64_t)(x) * (z)) - \
73
((int64_t)(y) * (z)) + \
74
0x40000000) >> 31)
75
#define AAC_HALF_SUM(x, y) (x) >> 1 + (y) >> 1
76
#define AAC_SRA_R(x, y) (int)(((x) + (1 << ((y) - 1))) >> (y))
77
78
#else
79
80
#define FFT_FLOAT 1
81
#define FFT_FIXED_32 0
82
83
typedef float INTFLOAT;
84
typedef float INT64FLOAT;
85
typedef float SHORTFLOAT;
86
typedef float AAC_FLOAT;
87
typedef unsigned AAC_SIGNE;
88
#define FIXR(x) ((float)(x))
89
#define FIXR10(x) ((float)(x))
90
#define Q23(x) x
91
#define Q30(x) x
92
#define Q31(x) x
93
#define RANGE15(x) (32768.0 * (x))
94
#define GET_GAIN(x, y) powf((x), -(y))
95
#define AAC_MUL16(x, y) ((x) * (y))
96
#define AAC_MUL26(x, y) ((x) * (y))
97
#define AAC_MUL30(x, y) ((x) * (y))
98
#define AAC_MUL31(x, y) ((x) * (y))
99
#define AAC_MADD28(x, y, a, b) ((x) * (y) + (a) * (b))
100
#define AAC_MADD30(x, y, a, b) ((x) * (y) + (a) * (b))
101
#define AAC_MADD30_V8(x, y, a, b, c, d, e, f) ((x) * (y) + (a) * (b) + \
102
(c) * (d) + (e) * (f))
103
#define AAC_MSUB30(x, y, a, b) ((x) * (y) - (a) * (b))
104
#define AAC_MSUB30_V8(x, y, a, b, c, d, e, f) ((x) * (y) + (a) * (b) - \
105
(c) * (d) - (e) * (f))
106
#define AAC_MSUB31_V3(x, y, z) ((x) - (y)) * (z)
107
#define AAC_HALF_SUM(x, y) ((x) + (y)) * 0.5f
108
#define AAC_SRA_R(x, y) (x)
109
110
#endif /* USE_FIXED */
111
112
#endif /* AVCODEC_AAC_DEFINES_H */
113
114