aboutsummaryrefslogtreecommitdiff
path: root/decoder/ixheaacd_sbr_const.h
blob: 2fe37931bd63f98a96191104536363ebf8bd1663 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/******************************************************************************
 *                                                                            *
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#ifndef IXHEAACD_SBR_CONST_H
#define IXHEAACD_SBR_CONST_H

#define SBR_AMPLITUDE_RESOLUTION_1_5 0
#define SBR_AMPLITUDE_RESOLUTION_3_0 1
#define NOISE_FLOOR_OFFSET_INT 6

#define LOW 0
#define HIGH 1

#define DTDF_DIR_TIME 1
#define DTDF_DIR_FREQ 0

#define SBR_CYC_REDCY_CHK_BITS 10

#define SBR_SAMP_FEQ_LVL_DEF 2
#define SBR_CHANGE_LVL_DEF 1
#define SBR_NOISE_BND_DEF 2

#define SBR_BND_LIMIT_DEF 2
#define SBR_GAIN_LIMIT_DEF 2
#define SBR_INTERPOL_SAMP_FEQ_DEF 1
#define SBR_SMOOTH_LEN_DEF 1

#define SBR_AMPLITUDE_RESOLUTION_BITS 1
#define SBR_BEGIN_SAMP_FREQ_BITS 4
#define SBR_END_SAMP_FREQ_BITS 4
#define SBR_CROSS_OVER_BND_BITS 3

#define ESBR_CROSS_OVER_BND_BITS 4
#define ESBR_PRE_FLAT_BITS 1
#define ESBR_PVC_MODE_BITS 2

#define ESBR_HEADER_EXTRA_3_BITS 1
#define PVC_MODE_BITS 2

#define SBR_HDR_EXTR_1_BITS 1
#define SBR_HDR_EXTR_2_BITS 1

#define SBR_SAMP_FREQ_LVL_BITS 2
#define SBR_CHANGE_LVL_BITS 1
#define SBR_NOISE_BND_BITS 2

#define SBR_BND_LIMIT_BITS 2
#define SBR_GAIN_LIMIT_BITS 2
#define SBR_INTERPOL_SAMP_FREQ_BITS 1
#define SBR_SMOOTH_LEN_BITS 1
#define SBR_STOCK_HE2_BITS 1
#define SBR_HDR_RESERV_BITS 2
#define SBR_SCE_RESERV_BITS 4

#define SBR_COUPLNG_MODE_BITS 1

#define SBR_INVERSE_FILT_MODE_BITS 2

#define SBR_ENLARGED_DATA_BITS 1
#define SBR_CONT_SIZE_BITS 4
#define SBR_CONT_ESC_CNT_BITS 8
#define SBR_CONT_ID_BITS 2

#define SBR_DEL_COD_DIR_BITS 1

#define SBR_ADD_SINE_FLAG_BITS 1

#define SBR_BEGIN_ENVN_BITS_AMPLITUDE_RESOLUTION_3_0 6
#define SBR_BEGIN_ENVN_BITS_BALNCE_AMPLITUDE_RESOLUTION_3_0 5
#define SBR_BEGIN_NOISE_BITS_AMPLITUDE_RESOLUTION_3_0 5
#define SBR_BEGIN_NOISE_BITS_BALNCE_AMPLITUDE_RESOLUTION_3_0 5

#define SBR_BEGIN_ENVN_BITS_AMPLITUDE_RESOLUTION_1_5 7
#define SBR_BEGIN_ENVN_BITS_BALNCE_AMPLITUDE_RESOLUTION_1_5 6

#define NOISE_FLOOR_OFFSET 6.0f

#define QMF_BUFFER_SIZE 64
#define TIMESLOT_BUFFER_SIZE 78

#define MAX_NUM_QMF_BANDS_ESBR 128

#define SBR_HF_ADJ_OFFSET 2
#define MPS_SBR_DELAY 6 /* 6 qmf samples */

#define MPS_SBR_DELAY_960 5

#define ESBR_HBE_DELAY_OFFSET 32 /* 32 qmf samples */

#define ESBR_HBE_DELAY_OFFSET_960 30

#define HBE_OPER_WIN_LEN (13)
#define NO_QMF_SYNTH_CHANNELS 64
#define TWICE_QMF_SYNTH_CHANNELS_NUM 128

#define MAX_NO_COLS_VALUE 64
#define MAX_NO_COLS_VALUE_BY_2 (MAX_NO_COLS_VALUE >> 1)

#define MAX_QMF_X_INBUF_SIZE (MAX_NO_COLS_VALUE_BY_2 + HBE_OPER_WIN_LEN - 1)
#define MAX_QMF_X_OUTBUF_SIZE \
  2 * (MAX_NO_COLS_VALUE_BY_2 + HBE_OPER_WIN_LEN - 1)
#define MAX_QMF_X_IN_REAL_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_INBUF_SIZE)
#define MAX_QMF_X_IN_IMAG_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_INBUF_SIZE)

#define MAX_QMF_X_OUT_REAL_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_OUTBUF_SIZE)
#define MAX_QMF_X_OUT_IMAG_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_OUTBUF_SIZE)

#define X_INBUF_SIZE (MAX_FRAME_SIZE + NO_QMF_SYNTH_CHANNELS)
#define X_OUTBUF_SIZE (X_INBUF_SIZE * 2)

#define HBE_OPER_BLK_LEN_2 10
#define HBE_OPER_BLK_LEN_3 8
#define HBE_OPER_BLK_LEN_4 6

#define MAX_HBE_PERSISTENT_SIZE                                                \
  (MAX_QMF_X_INBUF_SIZE * sizeof(FLOAT32*) +                                   \
   MAX_QMF_X_OUTBUF_SIZE * sizeof(FLOAT32*) +                                  \
   MAX_QMF_X_IN_REAL_BUF * sizeof(FLOAT32) +                                   \
   MAX_QMF_X_IN_IMAG_BUF * sizeof(FLOAT32) +                                   \
   MAX_QMF_X_OUT_REAL_BUF * sizeof(FLOAT32) +                                  \
   MAX_QMF_X_OUT_IMAG_BUF * sizeof(FLOAT32) + X_INBUF_SIZE * sizeof(FLOAT32) + \
   X_OUTBUF_SIZE * sizeof(FLOAT32))

#define MAX_QMF_BUF_LEN 78

#define SBR_FRAME_CLASS_BITS 2
#define SBR_VAR_BORD_BITS 2
#define SBR_FRQ_RES_BITS 1
#define SBR_REL_BITS 2
#define SBR_ENV_BITS 2
#define SBR_NUM_BITS 2

#define FIXFIX 0
#define FIXVAR 1
#define VARFIX 2
#define VARVAR 3

#define LEN_NIBBLE (4)

#define PI 3.14159265358979323846264338327950288
#define EPS 1e-12f
#define LOG2 0.69314718056f

#define MAX_STRETCH 4
#define MAXDEG 3

#define EXP_FOR_SQRT 0.5f

#define SBR_HF_RELAXATION_PARAM 0.999999f

#define ESBR_PATCHING_MODE_BITS 1
#define ESBR_OVERSAMPLING_FLAG_BITS 1
#define ESBR_PITCHIN_FLAG_BITS 1
#define ESBR_PITCHIN_BINS_BITS 7
#define ESBR_RESERVED_PRESENT 1
#define ESBR_RESERVED_BITS_DATA 4
#define ESBR_INVF_MODE_BITS 2
#define ESBR_NOISE_MODE_BITS 1
#define ESBR_DOMAIN_BITS 1

#define SBR_NUM_QMF_BANDS 64
#define SBR_NUM_QMF_BANDS_2 32

#define PVC_NUM_TIME_SLOTS 16
#define PVC_ESG_MIN_VAL 0.1f

#define PVC_10LOG10_ESG_MIN_VAL -10.0f

#define PVC_DIV_MODE_BITS 3
#define PVC_NS_MODE_BITS 1
#define PVC_GRID_INFO_BITS 1
#define PVC_REUSE_PVC_ID_BITS 1
#define PVC_ID_BITS 7
#define PVC_NB_HIGH_MODE1 8
#define PVC_NB_HIGH_MODE2 6

#define PVC_NB_LOW 3
#define PVC_ID_NUM_GROUPS 3
#define PVC_NB_HIGH 128
#define PVC_ID_NBIT 7

#define ESC_SIN_POS 31
#define MAX_OCTAVE 29
#define MAX_SECOND_REGION 50

#define SBR_ENERGY_PAN_OFFSET 12
#define SBR_ENV_SF_MAX_VAL_1_5 70
#define MAX_NOISE_FLOOR_FAC_VAL 35
#define MIN_NOISE_FLOOR_FAC_VAL 0

#define HBE_ZERO_BAND_IDX 6

#define MAX_OV_DELAY 12

#define LD_TRAN 1
#define LD_ENV_TIME_SLOT 7
#define LD_ENV_TBL_512 16
#define LD_ENV_TBL_480 15
#define LD_ENV_TBL_SIZE 4
#define SBR_TRAN_BITS 4
#define SBRLD_CLA_BITS 1
#define SBR_ENVT_NUMENV 0
#define SBR_ENVT_TRANIDX 3

static const int ixheaacd_ld_env_table_512[LD_ENV_TBL_512][LD_ENV_TBL_SIZE] = {
    {2, 4, -1, 0},  {2, 5, -1, 0},  {3, 2, 6, 1},   {3, 3, 7, 1},
    {3, 4, 8, 1},   {3, 5, 9, 1},   {3, 6, 10, 1},  {3, 7, 11, 1},
    {3, 8, 12, 1},  {3, 9, 13, 1},  {3, 10, 14, 1}, {2, 11, -1, 1},
    {2, 12, -1, 1}, {2, 13, -1, 1}, {2, 14, -1, 1}, {2, 15, -1, 1},
};

static const int ixheaacd_ld_env_table_480[LD_ENV_TBL_480][LD_ENV_TBL_SIZE] = {
    {2, 4, -1, 0},  {2, 5, -1, 0},  {3, 2, 6, 1},   {3, 3, 7, 1},
    {3, 4, 8, 1},   {3, 5, 9, 1},   {3, 6, 10, 1},  {3, 7, 11, 1},
    {3, 8, 12, 1},  {3, 9, 13, 1},  {2, 10, -1, 1}, {2, 11, -1, 1},
    {2, 12, -1, 1}, {2, 13, -1, 1}, {2, 14, -1, 1},
};

static const int ixheaacd_ld_env_table_time_slot[LD_ENV_TIME_SLOT] = {
    8, 5, 0, 0, 0, 0, 0};

#define SBR_CLA_BITS 2
#define SBR_ABS_BITS 2
#define SBR_RES_BITS 1
#define SBR_REL_BITS 2
#define SBR_ENV_BITS 2
#define SBR_NUM_BITS 2

#define FIXFIX 0
#define FIXVAR 1
#define VARFIX 2
#define VARVAR 3

#define LEN_NIBBLE (4)

#endif