xref: /aosp_15_r20/external/libxaac/encoder/iusace_cnst.h (revision 15dc779a375ca8b5125643b829a8aa4b70d7f451)
1*15dc779aSAndroid Build Coastguard Worker /******************************************************************************
2*15dc779aSAndroid Build Coastguard Worker  *                                                                            *
3*15dc779aSAndroid Build Coastguard Worker  * Copyright (C) 2023 The Android Open Source Project
4*15dc779aSAndroid Build Coastguard Worker  *
5*15dc779aSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*15dc779aSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*15dc779aSAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*15dc779aSAndroid Build Coastguard Worker  *
9*15dc779aSAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*15dc779aSAndroid Build Coastguard Worker  *
11*15dc779aSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*15dc779aSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*15dc779aSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*15dc779aSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*15dc779aSAndroid Build Coastguard Worker  * limitations under the License.
16*15dc779aSAndroid Build Coastguard Worker  *
17*15dc779aSAndroid Build Coastguard Worker  *****************************************************************************
18*15dc779aSAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*15dc779aSAndroid Build Coastguard Worker  */
20*15dc779aSAndroid Build Coastguard Worker 
21*15dc779aSAndroid Build Coastguard Worker #pragma once
22*15dc779aSAndroid Build Coastguard Worker #ifndef TRUE
23*15dc779aSAndroid Build Coastguard Worker #define TRUE (1)
24*15dc779aSAndroid Build Coastguard Worker #endif
25*15dc779aSAndroid Build Coastguard Worker #ifndef FALSE
26*15dc779aSAndroid Build Coastguard Worker #define FALSE (0)
27*15dc779aSAndroid Build Coastguard Worker #endif
28*15dc779aSAndroid Build Coastguard Worker 
29*15dc779aSAndroid Build Coastguard Worker #ifndef PI
30*15dc779aSAndroid Build Coastguard Worker #define PI (3.14159265358979323846f)
31*15dc779aSAndroid Build Coastguard Worker #endif
32*15dc779aSAndroid Build Coastguard Worker 
33*15dc779aSAndroid Build Coastguard Worker #define CORE_MODE_FD (0)
34*15dc779aSAndroid Build Coastguard Worker #define CORE_MODE_TD (1)
35*15dc779aSAndroid Build Coastguard Worker #define USAC_SWITCHED (0)
36*15dc779aSAndroid Build Coastguard Worker #define USAC_ONLY_FD (1)
37*15dc779aSAndroid Build Coastguard Worker #define USAC_ONLY_TD (2)
38*15dc779aSAndroid Build Coastguard Worker 
39*15dc779aSAndroid Build Coastguard Worker #define TREE_212 (0)
40*15dc779aSAndroid Build Coastguard Worker #define TREE_5151 (1)
41*15dc779aSAndroid Build Coastguard Worker #define TREE_5152 (2)
42*15dc779aSAndroid Build Coastguard Worker #define TREE_525 (3)
43*15dc779aSAndroid Build Coastguard Worker #define INVALID_TREE_CONFIG (-1)
44*15dc779aSAndroid Build Coastguard Worker 
45*15dc779aSAndroid Build Coastguard Worker #define ONLY_LONG_SEQUENCE (0)
46*15dc779aSAndroid Build Coastguard Worker #define LONG_START_SEQUENCE (1)
47*15dc779aSAndroid Build Coastguard Worker 
48*15dc779aSAndroid Build Coastguard Worker #define LONG_STOP_SEQUENCE (3)
49*15dc779aSAndroid Build Coastguard Worker #define STOP_START_SEQUENCE (4)
50*15dc779aSAndroid Build Coastguard Worker #define NSFB_SHORT (16)
51*15dc779aSAndroid Build Coastguard Worker #define MAX_SHORT_IN_LONG_BLOCK (8)
52*15dc779aSAndroid Build Coastguard Worker #define MAX_SHORT_WINDOWS (8)
53*15dc779aSAndroid Build Coastguard Worker #define MAX_SFB_LONG 51
54*15dc779aSAndroid Build Coastguard Worker #define FRAME_LEN_LONG 1024
55*15dc779aSAndroid Build Coastguard Worker #define FRAME_LEN_SHORT_768 (96)
56*15dc779aSAndroid Build Coastguard Worker #define MAX_TIME_CHANNELS (2)
57*15dc779aSAndroid Build Coastguard Worker #define MAX_SF_BANDS ((NSFB_SHORT + 1) * MAX_SHORT_IN_LONG_BLOCK)
58*15dc779aSAndroid Build Coastguard Worker #define MAX_SHIFT_LEN_LONG (4096)
59*15dc779aSAndroid Build Coastguard Worker #define TD_BUFFER_OFFSET (448 + 64)
60*15dc779aSAndroid Build Coastguard Worker #define MAX_EXTENSION_PAYLOADS MAX_TIME_CHANNELS
61*15dc779aSAndroid Build Coastguard Worker #define MAX_EXTENSION_PAYLOAD_LEN 6144 / 8 * MAX_TIME_CHANNELS
62*15dc779aSAndroid Build Coastguard Worker 
63*15dc779aSAndroid Build Coastguard Worker #define WIN_SEL_0 0
64*15dc779aSAndroid Build Coastguard Worker #define WIN_SEL_1 1
65*15dc779aSAndroid Build Coastguard Worker 
66*15dc779aSAndroid Build Coastguard Worker #define LEN_SUPERFRAME (1024)
67*15dc779aSAndroid Build Coastguard Worker #define LEN_SUPERFRAME_768 (768)
68*15dc779aSAndroid Build Coastguard Worker #define LEN_WIN_PLUS (512)
69*15dc779aSAndroid Build Coastguard Worker #define OVERLAP_WIN_SIZE_576 (576)
70*15dc779aSAndroid Build Coastguard Worker 
71*15dc779aSAndroid Build Coastguard Worker #define ORDER (16)
72*15dc779aSAndroid Build Coastguard Worker #define ORDER_BY_2 (8)
73*15dc779aSAndroid Build Coastguard Worker 
74*15dc779aSAndroid Build Coastguard Worker #define LEN_FRAME (256)
75*15dc779aSAndroid Build Coastguard Worker #define NUM_FRAMES (4)
76*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_SUBFR (4)
77*15dc779aSAndroid Build Coastguard Worker #define LEN_SUBFR (64)
78*15dc779aSAndroid Build Coastguard Worker 
79*15dc779aSAndroid Build Coastguard Worker #define N_MAX (LEN_SUPERFRAME)
80*15dc779aSAndroid Build Coastguard Worker #define FAC_LENGTH (LEN_FRAME / 2)
81*15dc779aSAndroid Build Coastguard Worker #define NUM_SUBFR_SUPERFRAME (NUM_FRAMES * MAX_NUM_SUBFR)
82*15dc779aSAndroid Build Coastguard Worker #define FDNS_RESOLUTION (64)
83*15dc779aSAndroid Build Coastguard Worker 
84*15dc779aSAndroid Build Coastguard Worker #define LEN_NEXT_HIGH_RATE (288)
85*15dc779aSAndroid Build Coastguard Worker #define LEN_LPC0 (256)
86*15dc779aSAndroid Build Coastguard Worker #define LEN_LP_WINDOW (448)
87*15dc779aSAndroid Build Coastguard Worker #define LEN_LP_WINDOW_HIGH_RATE (512)
88*15dc779aSAndroid Build Coastguard Worker 
89*15dc779aSAndroid Build Coastguard Worker #define SR_MIN (6000)
90*15dc779aSAndroid Build Coastguard Worker #define SR_MAX (32000)
91*15dc779aSAndroid Build Coastguard Worker 
92*15dc779aSAndroid Build Coastguard Worker #define FSCALE_DENOM (12800)
93*15dc779aSAndroid Build Coastguard Worker #define FAC_FSCALE_MAX (24000)
94*15dc779aSAndroid Build Coastguard Worker 
95*15dc779aSAndroid Build Coastguard Worker #define LEN_TOTAL_HIGH_RATE (ORDER + LEN_SUPERFRAME + LEN_NEXT_HIGH_RATE)
96*15dc779aSAndroid Build Coastguard Worker 
97*15dc779aSAndroid Build Coastguard Worker #define FILTER_DELAY (12)
98*15dc779aSAndroid Build Coastguard Worker 
99*15dc779aSAndroid Build Coastguard Worker #define TMIN (34)
100*15dc779aSAndroid Build Coastguard Worker #define TFR2 (128)
101*15dc779aSAndroid Build Coastguard Worker #define TFR1 (160)
102*15dc779aSAndroid Build Coastguard Worker #define TMAX (231)
103*15dc779aSAndroid Build Coastguard Worker 
104*15dc779aSAndroid Build Coastguard Worker #define T_UP_SAMP (4)
105*15dc779aSAndroid Build Coastguard Worker #define INTER_LP_FIL_ORDER (16)
106*15dc779aSAndroid Build Coastguard Worker #define INTER_LP_FIL_LEN (T_UP_SAMP * INTER_LP_FIL_ORDER + 1)
107*15dc779aSAndroid Build Coastguard Worker 
108*15dc779aSAndroid Build Coastguard Worker /* upto 410 for 24k sampling rate */
109*15dc779aSAndroid Build Coastguard Worker #define MAX_PITCH \
110*15dc779aSAndroid Build Coastguard Worker   (TMAX + (6 * ((((FAC_FSCALE_MAX * TMIN) + (FSCALE_DENOM / 2)) / FSCALE_DENOM) - TMIN)))
111*15dc779aSAndroid Build Coastguard Worker 
112*15dc779aSAndroid Build Coastguard Worker /* upto 536 for 32k sampling rate */
113*15dc779aSAndroid Build Coastguard Worker #define MAX_PITCH1 (TMAX + (6 * ((((32000 * TMIN) + (FSCALE_DENOM / 2)) / FSCALE_DENOM) - TMIN)))
114*15dc779aSAndroid Build Coastguard Worker 
115*15dc779aSAndroid Build Coastguard Worker #define LEN_INTERPOL (16 + 1)
116*15dc779aSAndroid Build Coastguard Worker #define OPL_DECIM (2)
117*15dc779aSAndroid Build Coastguard Worker #define PREEMPH_FILT_FAC (0.68f)
118*15dc779aSAndroid Build Coastguard Worker #define TILT_FAC (0.68f)
119*15dc779aSAndroid Build Coastguard Worker #define PIT_SHARP (0.85f)
120*15dc779aSAndroid Build Coastguard Worker #define TILT_CODE (0.3f)
121*15dc779aSAndroid Build Coastguard Worker 
122*15dc779aSAndroid Build Coastguard Worker /* AMR_WB+ mode relative to AMR-WB core */
123*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_9k6 (0)
124*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_11k2 (1)
125*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_12k8 (2)
126*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_14k4 (3)
127*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_16k (4)
128*15dc779aSAndroid Build Coastguard Worker #define ACELP_CORE_MODE_18k4 (5)
129*15dc779aSAndroid Build Coastguard Worker 
130*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_20 (20)
131*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_28 (28)
132*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_36 (36)
133*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_44 (44)
134*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_52 (52)
135*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_64 (64)
136*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_72 (72)
137*15dc779aSAndroid Build Coastguard Worker #define ACELP_NUM_BITS_88 (88)
138*15dc779aSAndroid Build Coastguard Worker 
139*15dc779aSAndroid Build Coastguard Worker #define NUM_ACELP_CORE_MODES (6)
140*15dc779aSAndroid Build Coastguard Worker #define NBITS_MAX (48 * 80 + 46)
141*15dc779aSAndroid Build Coastguard Worker 
142*15dc779aSAndroid Build Coastguard Worker #define NBITS_MODE (4 * 2)
143*15dc779aSAndroid Build Coastguard Worker #define NBITS_LPC (46)
144*15dc779aSAndroid Build Coastguard Worker 
145*15dc779aSAndroid Build Coastguard Worker #define NUM_RE8_PRM (LEN_SUPERFRAME + (LEN_SUPERFRAME / 8))
146*15dc779aSAndroid Build Coastguard Worker 
147*15dc779aSAndroid Build Coastguard Worker #define NUM_TCX80_PRM (FAC_LENGTH + 2 + NUM_RE8_PRM)
148*15dc779aSAndroid Build Coastguard Worker #define NUM_TCX40_PRM (FAC_LENGTH + 2 + (NUM_RE8_PRM / 2))
149*15dc779aSAndroid Build Coastguard Worker #define NUM_TCX20_PRM (FAC_LENGTH + 2 + (320 + 320 / 8))
150*15dc779aSAndroid Build Coastguard Worker 
151*15dc779aSAndroid Build Coastguard Worker #define NUM_LPC_PRM (256)
152*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_TCX_PRM_PER_DIV (NUM_TCX20_PRM)
153*15dc779aSAndroid Build Coastguard Worker 
154*15dc779aSAndroid Build Coastguard Worker #define L_OLD_SPEECH_HIGH_RATE LEN_TOTAL_HIGH_RATE - LEN_SUPERFRAME
155*15dc779aSAndroid Build Coastguard Worker 
156*15dc779aSAndroid Build Coastguard Worker #define HP_ORDER (3)
157*15dc779aSAndroid Build Coastguard Worker #define LEN_INTERPOL1 (4)
158*15dc779aSAndroid Build Coastguard Worker 
159*15dc779aSAndroid Build Coastguard Worker #define NUM_OPEN_LOOP_LAGS (5)
160*15dc779aSAndroid Build Coastguard Worker #define OPEN_LOOP_LAG_MEDIAN (3)
161*15dc779aSAndroid Build Coastguard Worker #define DECIM2_FIR_FILT_MEM_SIZE (3)
162*15dc779aSAndroid Build Coastguard Worker 
163*15dc779aSAndroid Build Coastguard Worker #define NUM_QUANTIZATION_LEVEL (128)
164*15dc779aSAndroid Build Coastguard Worker #define LEV_DUR_MAX_ORDER (24)
165*15dc779aSAndroid Build Coastguard Worker #define PI_BY_6400 (PI / 6400.0)
166*15dc779aSAndroid Build Coastguard Worker #define LEN_FRAME_16K 320
167*15dc779aSAndroid Build Coastguard Worker #define ORDER_LP_FILT_16K (20)
168*15dc779aSAndroid Build Coastguard Worker #define LSP_2_LSF_SCALE (6400.0 / PI)
169*15dc779aSAndroid Build Coastguard Worker #define FREQ_MAX (6400.0f)
170*15dc779aSAndroid Build Coastguard Worker #define FREQ_DIV (400.0f)
171*15dc779aSAndroid Build Coastguard Worker #define CHEBYSHEV_NUM_ITER (4)
172*15dc779aSAndroid Build Coastguard Worker #define CHEBYSHEV_NUM_POINTS (100)
173*15dc779aSAndroid Build Coastguard Worker #define LSF_GAP (50.0f)
174*15dc779aSAndroid Build Coastguard Worker 
175*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_PULSES (24)
176*15dc779aSAndroid Build Coastguard Worker #define NPMAXPT ((MAX_NUM_PULSES + 4 - 1) / 4)
177*15dc779aSAndroid Build Coastguard Worker #define ACELP_GAIN_TBL_OFFSET (64)
178*15dc779aSAndroid Build Coastguard Worker #define ACELP_RANGE_GAIN_PT_IDX_SEARCH (NUM_QUANTIZATION_LEVEL - ACELP_GAIN_TBL_OFFSET)
179*15dc779aSAndroid Build Coastguard Worker #define ACELP_SEARCH_RANGE_QUANTIZER_IDX (128)
180*15dc779aSAndroid Build Coastguard Worker 
181*15dc779aSAndroid Build Coastguard Worker #define MAX_FLT_VAL (3.402823466e+38F)
182*15dc779aSAndroid Build Coastguard Worker #define MIN_FLT_VAL (1.175494351e-38F)
183*15dc779aSAndroid Build Coastguard Worker #define MIN_SHRT_VAL (-32768)
184*15dc779aSAndroid Build Coastguard Worker #define MAX_SHRT_VAL (32767)
185*15dc779aSAndroid Build Coastguard Worker 
186*15dc779aSAndroid Build Coastguard Worker #define LAG_MIN (64)   // if 48k is max sr-- corresponding pitch_min/2
187*15dc779aSAndroid Build Coastguard Worker #define LAG_MAX (408)  // if 48k is max sr-- corresponding pitch_max/2
188*15dc779aSAndroid Build Coastguard Worker #define LEN_CORR_R (LAG_MAX - LAG_MIN + 1)
189*15dc779aSAndroid Build Coastguard Worker 
190*15dc779aSAndroid Build Coastguard Worker #define CODE_BOOK_ALPHA_LAV 121
191*15dc779aSAndroid Build Coastguard Worker 
192*15dc779aSAndroid Build Coastguard Worker #define MDST_TX_FLAG (0)
193*15dc779aSAndroid Build Coastguard Worker #define MDCT_TX_FLAG (1)
194*15dc779aSAndroid Build Coastguard Worker 
195*15dc779aSAndroid Build Coastguard Worker #define NO_SBR_CCFL_768 (0)
196*15dc779aSAndroid Build Coastguard Worker #define NO_SBR_CCFL_1024 (1)
197*15dc779aSAndroid Build Coastguard Worker #define SBR_8_3 (2)
198*15dc779aSAndroid Build Coastguard Worker #define SBR_2_1 (3)
199*15dc779aSAndroid Build Coastguard Worker #define SBR_4_1 (4)
200*15dc779aSAndroid Build Coastguard Worker 
201*15dc779aSAndroid Build Coastguard Worker #define USACE_MAX_SCR_SIZE (733836)
202*15dc779aSAndroid Build Coastguard Worker #define USACE_SCR_STACK (10 * 1024)
203*15dc779aSAndroid Build Coastguard Worker #define MAX_USAC_ESBR_BITRATE (96000)
204*15dc779aSAndroid Build Coastguard Worker 
205*15dc779aSAndroid Build Coastguard Worker #define MAX_PREROLL_FRAMES (3)
206*15dc779aSAndroid Build Coastguard Worker #define MAX_OUTPUT_BYTES_PER_CH (768)
207*15dc779aSAndroid Build Coastguard Worker #define MAXIMUM_VALUE_8BIT (255)
208*15dc779aSAndroid Build Coastguard Worker #define DEFAULT_RAP_INTERVAL_IN_MS (-1)
209*15dc779aSAndroid Build Coastguard Worker #define MIN_RAP_INTERVAL_IN_MS (1000)
210*15dc779aSAndroid Build Coastguard Worker #define MAX_PREROLL_CONFIG_SIZE (1024)
211*15dc779aSAndroid Build Coastguard Worker #define CC_NUM_PREROLL_FRAMES (1)
212*15dc779aSAndroid Build Coastguard Worker #define USAC_FIRST_FRAME_FLAG_DEFAULT_VALUE (1)
213