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