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 #define NUM_QMF_BANDS (64) 23*15dc779aSAndroid Build Coastguard Worker #define MAX_HYBRID_BANDS (71) 24*15dc779aSAndroid Build Coastguard Worker 25*15dc779aSAndroid Build Coastguard Worker #define MAX_INPUT_CHANNELS (6) 26*15dc779aSAndroid Build Coastguard Worker #define MAX_OUTPUT_CHANNELS (2) 27*15dc779aSAndroid Build Coastguard Worker #define PARAMETER_BANDS (20) 28*15dc779aSAndroid Build Coastguard Worker 29*15dc779aSAndroid Build Coastguard Worker #define MAX_QMF_BANDS_TO_HYBRID (7) 30*15dc779aSAndroid Build Coastguard Worker #define MAX_HYBRID_ONLY_BANDS_PER_QMF (16) 31*15dc779aSAndroid Build Coastguard Worker #define PROTO_LEN (13) 32*15dc779aSAndroid Build Coastguard Worker #define BUFFER_LEN_LF (PROTO_LEN - 1 + MAX_TIME_SLOTS) 33*15dc779aSAndroid Build Coastguard Worker 34*15dc779aSAndroid Build Coastguard Worker #define BUFFER_LEN_HF ((PROTO_LEN - 1) / 2) 35*15dc779aSAndroid Build Coastguard Worker 36*15dc779aSAndroid Build Coastguard Worker #define MAX_BUFFER_SIZE (2048) 37*15dc779aSAndroid Build Coastguard Worker #define HYBRID_FILTER_DELAY (6) 38*15dc779aSAndroid Build Coastguard Worker #define QMF_FILTER_STATE_SYN_SIZE (640) 39*15dc779aSAndroid Build Coastguard Worker #define NUM_QMF_BANDS_TO_LF (3) 40*15dc779aSAndroid Build Coastguard Worker 41*15dc779aSAndroid Build Coastguard Worker #define MPS_MAX_FRAME_LENGTH (4096) 42*15dc779aSAndroid Build Coastguard Worker #define MAX_SAMPLING_RATE (48000) 43*15dc779aSAndroid Build Coastguard Worker #define NUM_QMF_BANDS (64) 44*15dc779aSAndroid Build Coastguard Worker #define MAX_QMF_BANDS (128) 45*15dc779aSAndroid Build Coastguard Worker 46*15dc779aSAndroid Build Coastguard Worker #define MAX_ANA_TIME_SLOT (192) 47*15dc779aSAndroid Build Coastguard Worker #define MAX_HYBRID_BAND (MAX_QMF_BANDS) 48*15dc779aSAndroid Build Coastguard Worker #define MAX_FRAME_TIME_SLOT (128) 49*15dc779aSAndroid Build Coastguard Worker #define MAX_HYBRID_STATIC_SLOT (96) 50*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_NUM_BOXES (1) 51*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_INPUT_CHANNELS (2) 52*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_OUTPUT_CHANNELS (1) 53*15dc779aSAndroid Build Coastguard Worker 54*15dc779aSAndroid Build Coastguard Worker #define EPSILON (1e-9f) 55*15dc779aSAndroid Build Coastguard Worker #define PI_FLT (3.1415926535897931f) 56*15dc779aSAndroid Build Coastguard Worker #define ALPHA (0.0001f) 57*15dc779aSAndroid Build Coastguard Worker 58*15dc779aSAndroid Build Coastguard Worker #define MAX_DELAY_INPUT (1024) 59*15dc779aSAndroid Build Coastguard Worker #define MAX_DELAY_OUTPUT (4096) 60*15dc779aSAndroid Build Coastguard Worker #define MAX_DELAY_SURROUND_ANALYSIS (20) 61*15dc779aSAndroid Build Coastguard Worker #define MAX_BITSTREAM_DELAY (4) 62*15dc779aSAndroid Build Coastguard Worker #define MAX_MPEGS_BYTES (1 << 14) 63*15dc779aSAndroid Build Coastguard Worker #define MAX_SSC_BYTES (1 << 6) 64*15dc779aSAndroid Build Coastguard Worker #define MAX_MPS_BS_PAYLOAD_SIZE 10000 65*15dc779aSAndroid Build Coastguard Worker #define MAX_SPACE_TREE_CHANNELS (2) 66*15dc779aSAndroid Build Coastguard Worker #define NUM_KEEP_WINDOWS (3) 67*15dc779aSAndroid Build Coastguard Worker 68*15dc779aSAndroid Build Coastguard Worker #define WIN_ACTIV (1) 69*15dc779aSAndroid Build Coastguard Worker #define MAX_KEEP_FRAMECOUNT (100) 70*15dc779aSAndroid Build Coastguard Worker 71*15dc779aSAndroid Build Coastguard Worker #define LEFT_CH (0) 72*15dc779aSAndroid Build Coastguard Worker #define RIGHT_CH (1) 73*15dc779aSAndroid Build Coastguard Worker 74*15dc779aSAndroid Build Coastguard Worker #define SPACE_ONSET_THRESHOLD (3.0) 75*15dc779aSAndroid Build Coastguard Worker #define SPACE_ONSET_THRESHOLD_SQUARE_FLT ((1.0 / (SPACE_ONSET_THRESHOLD * SPACE_ONSET_THRESHOLD))) 76*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_TRANS (MAX_NUM_PARAMS / 2) 77*15dc779aSAndroid Build Coastguard Worker 78*15dc779aSAndroid Build Coastguard Worker #define MAX_FREQ_RES_INDEX (8) 79*15dc779aSAndroid Build Coastguard Worker #define MAX_SAMPLING_FREQUENCY_INDEX (13) 80*15dc779aSAndroid Build Coastguard Worker #define SAMPLING_FREQUENCY_INDEX_ESCAPE (15) 81*15dc779aSAndroid Build Coastguard Worker 82*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_VAR_HOLD (0) 83*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_VAR_ISOLATE (1) 84*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_FRAME_WINDOWING_INTP (0) 85*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_FRAME_WINDOWING_HOLD (1) 86*15dc779aSAndroid Build Coastguard Worker 87*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_MAX_FREQ_BANDS (MAX_NUM_BINS) 88*15dc779aSAndroid Build Coastguard Worker 89*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_CLD_QUANT_FINE (31) 90*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_CLD_QUANT_COARSE (15) 91*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_OFFSET_CLD_QUANT_COARSE (7) 92*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_OFFSET_CLD_QUANT_FINE (15) 93*15dc779aSAndroid Build Coastguard Worker 94*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_ICC_QUANT_COARSE (4) 95*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_ICC_QUANT_FINE (8) 96*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_OFFSET_ICC_QUANT_COARSE (0) 97*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_OFFSET_ICC_QUANT_FINE (0) 98*15dc779aSAndroid Build Coastguard Worker 99*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_PARAM_BANDS (56) 100*15dc779aSAndroid Build Coastguard Worker 101*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_TREE_5151 (0) 102*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_TREE_5152 (1) 103*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_TREE_525 (2) 104*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_TREE_212 (7) 105*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_FIXED_GAIN_DMX_INVALID (-1) 106*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_MAX_FIXED_GAIN_DMX (7) 107*15dc779aSAndroid Build Coastguard Worker 108*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DECORR_INVALID (-1) 109*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DECORR_QMFSPLIT0 (0) 110*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DECORR_QMFSPLIT1 (1) 111*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DECORR_QMFSPLIT2 (2) 112*15dc779aSAndroid Build Coastguard Worker 113*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DATA_MODE_DEFAULT (0) 114*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DATA_MODE_KEEP (1) 115*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DATA_MODE_INTERPOLATE (2) 116*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DATA_MODE_FINECOARSE (3) 117*15dc779aSAndroid Build Coastguard Worker 118*15dc779aSAndroid Build Coastguard Worker #define MAX_NUM_BOXES (5) 119*15dc779aSAndroid Build Coastguard Worker #define MAX_AAC_SHORTWINDOWGROUPS (4) 120*15dc779aSAndroid Build Coastguard Worker #define MAX_AAC_MDCT (1024) 121*15dc779aSAndroid Build Coastguard Worker #define MAX_AAC_FRAMES (2) 122*15dc779aSAndroid Build Coastguard Worker 123*15dc779aSAndroid Build Coastguard Worker #define NUM_DATATYPES (3) 124*15dc779aSAndroid Build Coastguard Worker 125*15dc779aSAndroid Build Coastguard Worker #define DELAY_COMPENSATION (352) 126*15dc779aSAndroid Build Coastguard Worker 127*15dc779aSAndroid Build Coastguard Worker #define LOG10_2_10 (3.01029995664f) 128*15dc779aSAndroid Build Coastguard Worker #define INV_LN_10_10 (4.3429448190325182765112891891661f) 129*15dc779aSAndroid Build Coastguard Worker 130*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_MODE_INVALID (0) 131*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_DMX_GAIN_DEFAULT (2) 132*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_BANDS_INVALID (0) 133*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_BANDS_ld (15) 134*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_SAC_BANDS_usac (28) 135*15dc779aSAndroid Build Coastguard Worker 136*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_QUANTMODE_INVALID (-1) 137*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_QUANTMODE_FINE (0) 138*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_QUANTMODE_EBQ1 (1) 139*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_QUANTMODE_EBQ2 (2) 140*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_QUANTMODE_RSVD3 (3) 141*15dc779aSAndroid Build Coastguard Worker 142*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_INPUT_BUFFER_IDX (0) 143*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_OUTUT_BUFFER_IDX (0) 144*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MPS_BITSTREAM_BUFFER_IDX (1) 145*15dc779aSAndroid Build Coastguard Worker 146*15dc779aSAndroid Build Coastguard Worker #define QMF_FILTER_PROTOTYPE_SIZE 640 147*15dc779aSAndroid Build Coastguard Worker #define QMF_NO_POLY 5 148*15dc779aSAndroid Build Coastguard Worker #define QMF640_PFT_TABLE_SIZE (640 / 2 + QMF_NO_POLY) 149*15dc779aSAndroid Build Coastguard Worker #define QMF320_MPSLDFB_PFT_TABLE_SIZE (320) 150*15dc779aSAndroid Build Coastguard Worker #define QMF640_MPSLDFB_PFT_TABLE_SIZE (640) 151*15dc779aSAndroid Build Coastguard Worker #define QMF_MPSLDFB_PFT_SCALE 1 152*15dc779aSAndroid Build Coastguard Worker 153*15dc779aSAndroid Build Coastguard Worker #define MAX_MPEGS_BYTES (1 << 14) 154*15dc779aSAndroid Build Coastguard Worker #define MAX_SSC_BYTES (1 << 6) 155*15dc779aSAndroid Build Coastguard Worker #define MAX_HYBRID_BAND_OFFSET (64) 156*15dc779aSAndroid Build Coastguard Worker 157*15dc779aSAndroid Build Coastguard Worker #define SQUARE_ROOT_TWO (1.41421356237f) 158*15dc779aSAndroid Build Coastguard Worker #define MPS_PAYLOAD_SIZE (1024) 159*15dc779aSAndroid Build Coastguard Worker #define ONE_BY_LN_TWO (1.44269504089f) 160*15dc779aSAndroid Build Coastguard Worker 161*15dc779aSAndroid Build Coastguard Worker #define PBC_MIN_BANDS 5 162*15dc779aSAndroid Build Coastguard Worker #define MAXBANDS 56 163*15dc779aSAndroid Build Coastguard Worker 164*15dc779aSAndroid Build Coastguard Worker #define MAX_FACTORS 23 165*15dc779aSAndroid Build Coastguard Worker #define MAX_PERM 209 166*15dc779aSAndroid Build Coastguard Worker #define NFACTOR 11 167*15dc779aSAndroid Build Coastguard Worker #ifndef M_PI 168*15dc779aSAndroid Build Coastguard Worker #define M_PI 3.14159265358979323846264338327950288 169*15dc779aSAndroid Build Coastguard Worker #endif 170*15dc779aSAndroid Build Coastguard Worker #define SIN_60 0.86602540378443865 171*15dc779aSAndroid Build Coastguard Worker #define COS_72 0.30901699437494742 172*15dc779aSAndroid Build Coastguard Worker #define SIN_72 0.95105651629515357 173*15dc779aSAndroid Build Coastguard Worker #define COS_22_5 (0.92387953251129f) 174*15dc779aSAndroid Build Coastguard Worker #define COS_67_5 (0.38268343236509f) 175*15dc779aSAndroid Build Coastguard Worker #define SIN_67_5 (0.92387953251129f) 176*15dc779aSAndroid Build Coastguard Worker #define SIN_22_5 (0.38268343236509f) 177*15dc779aSAndroid Build Coastguard Worker #define INV_SQRT_2 (0.70710678118655f) 178*15dc779aSAndroid Build Coastguard Worker 179*15dc779aSAndroid Build Coastguard Worker #define MPS_COS_PI_BY_16 (0.980785280403230f) 180*15dc779aSAndroid Build Coastguard Worker #define MPS_SIN_PI_BY_16 (0.195090322016128f) 181*15dc779aSAndroid Build Coastguard Worker #define MPS_COS_3_PI_BY_16 (0.831469612302545f) 182*15dc779aSAndroid Build Coastguard Worker #define MPS_SIN_3_PI_BY_16 (0.555570233019602f) 183*15dc779aSAndroid Build Coastguard Worker #define MPS_COS_6_PI_BY_16 (0.923879532511287f) 184*15dc779aSAndroid Build Coastguard Worker #define MPS_SIN_6_PI_BY_16 (0.382683432365090f) 185*15dc779aSAndroid Build Coastguard Worker #define MPS_INV_SQRT2 (7.071067811865475e-1f) 186*15dc779aSAndroid Build Coastguard Worker #define MPS_COS_PI_DIV8 (9.238795325112867e-1f) 187*15dc779aSAndroid Build Coastguard Worker #define MPS_COS_3PI_DIV8 (3.826834323650898e-1f) 188*15dc779aSAndroid Build Coastguard Worker #define MPS_SQRT2PLUS1 (2.414213562373095f) 189*15dc779aSAndroid Build Coastguard Worker #define MPS_SQRT2MINUS1 (4.142135623730952e-1f) 190