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 #include "iusace_type_def.h" 22*15dc779aSAndroid Build Coastguard Worker #include "iusace_cnst.h" 23*15dc779aSAndroid Build Coastguard Worker #include "iusace_tns_usac.h" 24*15dc779aSAndroid Build Coastguard Worker #include "iusace_psy_mod.h" 25*15dc779aSAndroid Build Coastguard Worker #include "iusace_psy_utils.h" 26*15dc779aSAndroid Build Coastguard Worker 27*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_96_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 28*15dc779aSAndroid Build Coastguard Worker 48, 52, 56, 64, 72, 80, 88, 96, 108, 120, 132, 29*15dc779aSAndroid Build Coastguard Worker 144, 156, 172, 188, 212, 240, 276, 320, 384, 448, 512, 30*15dc779aSAndroid Build Coastguard Worker 576, 640, 704, 768, 832, 896, 960, 1024}; 31*15dc779aSAndroid Build Coastguard Worker 32*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_96_768[] = { 33*15dc779aSAndroid Build Coastguard Worker 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 34*15dc779aSAndroid Build Coastguard Worker 108, 120, 132, 144, 156, 172, 188, 212, 240, 276, 320, 384, 448, 512, 576, 640, 704, 768}; 35*15dc779aSAndroid Build Coastguard Worker 36*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_96_128[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128}; 37*15dc779aSAndroid Build Coastguard Worker 38*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_96_96[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 96}; 39*15dc779aSAndroid Build Coastguard Worker 40*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_64_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 41*15dc779aSAndroid Build Coastguard Worker 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 42*15dc779aSAndroid Build Coastguard Worker 192, 216, 240, 268, 304, 344, 384, 424, 464, 504, 544, 584, 43*15dc779aSAndroid Build Coastguard Worker 624, 664, 704, 744, 784, 824, 864, 904, 944, 984, 1024}; 44*15dc779aSAndroid Build Coastguard Worker 45*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_64_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 46*15dc779aSAndroid Build Coastguard Worker 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 47*15dc779aSAndroid Build Coastguard Worker 156, 172, 192, 216, 240, 268, 304, 344, 384, 424, 464, 48*15dc779aSAndroid Build Coastguard Worker 504, 544, 584, 624, 664, 704, 744, 768}; 49*15dc779aSAndroid Build Coastguard Worker 50*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_64_128[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128}; 51*15dc779aSAndroid Build Coastguard Worker 52*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_64_96[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 96}; 53*15dc779aSAndroid Build Coastguard Worker 54*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_48_1024[] = { 55*15dc779aSAndroid Build Coastguard Worker 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 56*15dc779aSAndroid Build Coastguard Worker 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 57*15dc779aSAndroid Build Coastguard Worker 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 1024}; 58*15dc779aSAndroid Build Coastguard Worker 59*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_48_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 60*15dc779aSAndroid Build Coastguard Worker 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 61*15dc779aSAndroid Build Coastguard Worker 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 62*15dc779aSAndroid Build Coastguard Worker 480, 512, 544, 576, 608, 640, 672, 704, 736, 768}; 63*15dc779aSAndroid Build Coastguard Worker 64*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_48_128[] = {4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128}; 65*15dc779aSAndroid Build Coastguard Worker 66*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_48_96[] = {4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96}; 67*15dc779aSAndroid Build Coastguard Worker 68*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_32_1024[] = { 69*15dc779aSAndroid Build Coastguard Worker 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 70*15dc779aSAndroid Build Coastguard Worker 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 71*15dc779aSAndroid Build Coastguard Worker 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024}; 72*15dc779aSAndroid Build Coastguard Worker 73*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_32_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 74*15dc779aSAndroid Build Coastguard Worker 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 75*15dc779aSAndroid Build Coastguard Worker 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 76*15dc779aSAndroid Build Coastguard Worker 480, 512, 544, 576, 608, 640, 672, 704, 736, 768}; 77*15dc779aSAndroid Build Coastguard Worker 78*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_24_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 79*15dc779aSAndroid Build Coastguard Worker 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 80*15dc779aSAndroid Build Coastguard Worker 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, 432, 81*15dc779aSAndroid Build Coastguard Worker 468, 508, 552, 600, 652, 704, 768, 832, 896, 960, 1024}; 82*15dc779aSAndroid Build Coastguard Worker 83*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_24_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 84*15dc779aSAndroid Build Coastguard Worker 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 85*15dc779aSAndroid Build Coastguard Worker 148, 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 86*15dc779aSAndroid Build Coastguard Worker 364, 396, 432, 468, 508, 552, 600, 652, 704, 768}; 87*15dc779aSAndroid Build Coastguard Worker 88*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_24_128[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128}; 89*15dc779aSAndroid Build Coastguard Worker 90*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_24_96[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 96}; 91*15dc779aSAndroid Build Coastguard Worker 92*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_16_1024[] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 93*15dc779aSAndroid Build Coastguard Worker 100, 112, 124, 136, 148, 160, 172, 184, 196, 212, 228, 94*15dc779aSAndroid Build Coastguard Worker 244, 260, 280, 300, 320, 344, 368, 396, 424, 456, 492, 95*15dc779aSAndroid Build Coastguard Worker 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024}; 96*15dc779aSAndroid Build Coastguard Worker 97*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_16_768[] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 98*15dc779aSAndroid Build Coastguard Worker 88, 100, 112, 124, 136, 148, 160, 172, 184, 196, 99*15dc779aSAndroid Build Coastguard Worker 212, 228, 244, 260, 280, 300, 320, 344, 368, 396, 100*15dc779aSAndroid Build Coastguard Worker 424, 456, 492, 532, 572, 616, 664, 716, 768}; 101*15dc779aSAndroid Build Coastguard Worker 102*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_16_128[] = {4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128}; 103*15dc779aSAndroid Build Coastguard Worker 104*15dc779aSAndroid Build Coastguard Worker const WORD16 iexheaac_sfb_16_96[] = {4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 96}; 105*15dc779aSAndroid Build Coastguard Worker 106*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_8_1024[] = {12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 107*15dc779aSAndroid Build Coastguard Worker 132, 144, 156, 172, 188, 204, 220, 236, 252, 268, 108*15dc779aSAndroid Build Coastguard Worker 288, 308, 328, 348, 372, 396, 420, 448, 476, 508, 109*15dc779aSAndroid Build Coastguard Worker 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024}; 110*15dc779aSAndroid Build Coastguard Worker 111*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_8_128[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128}; 112*15dc779aSAndroid Build Coastguard Worker 113*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_8_768[] = { 114*15dc779aSAndroid Build Coastguard Worker 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172, 188, 204, 220, 236, 252, 115*15dc779aSAndroid Build Coastguard Worker 268, 288, 308, 328, 348, 372, 396, 420, 448, 476, 508, 544, 580, 620, 664, 712, 764, 768}; 116*15dc779aSAndroid Build Coastguard Worker 117*15dc779aSAndroid Build Coastguard Worker const WORD16 iusace_sfb_8_96[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 96}; 118*15dc779aSAndroid Build Coastguard Worker 119*15dc779aSAndroid Build Coastguard Worker ia_sfb_info_struct iusace_sfb_info_1024[12] = { 120*15dc779aSAndroid Build Coastguard Worker {8000, 40, 15, iusace_sfb_8_1024, iusace_sfb_8_128, {0}, {0}}, 121*15dc779aSAndroid Build Coastguard Worker {11025, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, 122*15dc779aSAndroid Build Coastguard Worker {12000, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, 123*15dc779aSAndroid Build Coastguard Worker {16000, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, 124*15dc779aSAndroid Build Coastguard Worker {22050, 47, 15, iusace_sfb_24_1024, iusace_sfb_24_128, {0}, {0}}, 125*15dc779aSAndroid Build Coastguard Worker {24000, 47, 15, iusace_sfb_24_1024, iusace_sfb_24_128, {0}, {0}}, 126*15dc779aSAndroid Build Coastguard Worker {32000, 51, 14, iusace_sfb_32_1024, iusace_sfb_48_128, {0}, {0}}, 127*15dc779aSAndroid Build Coastguard Worker {44100, 49, 14, iusace_sfb_48_1024, iusace_sfb_48_128, {0}, {0}}, 128*15dc779aSAndroid Build Coastguard Worker {48000, 49, 14, iusace_sfb_48_1024, iusace_sfb_48_128, {0}, {0}}, 129*15dc779aSAndroid Build Coastguard Worker {64000, 47, 12, iusace_sfb_64_1024, iusace_sfb_64_128, {0}, {0}}, 130*15dc779aSAndroid Build Coastguard Worker {88200, 41, 12, iusace_sfb_64_1024, iusace_sfb_64_128, {0}, {0}}, 131*15dc779aSAndroid Build Coastguard Worker {96000, 41, 12, iusace_sfb_96_1024, iusace_sfb_96_128, {0}, {0}}}; 132*15dc779aSAndroid Build Coastguard Worker 133*15dc779aSAndroid Build Coastguard Worker #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) 134*15dc779aSAndroid Build Coastguard Worker 135*15dc779aSAndroid Build Coastguard Worker ia_sfb_info_struct iusace_sfb_info_768[12] = {{8000, 136*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iusace_sfb_8_768), 137*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iusace_sfb_8_96), 138*15dc779aSAndroid Build Coastguard Worker iusace_sfb_8_768, 139*15dc779aSAndroid Build Coastguard Worker iusace_sfb_8_96, 140*15dc779aSAndroid Build Coastguard Worker {0}, 141*15dc779aSAndroid Build Coastguard Worker {0}}, 142*15dc779aSAndroid Build Coastguard Worker {11025, 143*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_768), 144*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_96), 145*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_768, 146*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_96, 147*15dc779aSAndroid Build Coastguard Worker {0}, 148*15dc779aSAndroid Build Coastguard Worker {0}}, 149*15dc779aSAndroid Build Coastguard Worker {12000, 150*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_768), 151*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_96), 152*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_768, 153*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_96, 154*15dc779aSAndroid Build Coastguard Worker {0}, 155*15dc779aSAndroid Build Coastguard Worker {0}}, 156*15dc779aSAndroid Build Coastguard Worker {16000, 157*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_768), 158*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_16_96), 159*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_768, 160*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_16_96, 161*15dc779aSAndroid Build Coastguard Worker {0}, 162*15dc779aSAndroid Build Coastguard Worker {0}}, 163*15dc779aSAndroid Build Coastguard Worker {22050, 164*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_24_768), 165*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_24_96), 166*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_24_768, 167*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_24_96, 168*15dc779aSAndroid Build Coastguard Worker {0}, 169*15dc779aSAndroid Build Coastguard Worker {0}}, 170*15dc779aSAndroid Build Coastguard Worker {24000, 171*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_24_768), 172*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_24_96), 173*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_24_768, 174*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_24_96, 175*15dc779aSAndroid Build Coastguard Worker {0}, 176*15dc779aSAndroid Build Coastguard Worker {0}}, 177*15dc779aSAndroid Build Coastguard Worker {32000, 178*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_768), 179*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_96), 180*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_768, 181*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_96, 182*15dc779aSAndroid Build Coastguard Worker {0}, 183*15dc779aSAndroid Build Coastguard Worker {0}}, 184*15dc779aSAndroid Build Coastguard Worker {44100, 185*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_768), 186*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_96), 187*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_768, 188*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_96, 189*15dc779aSAndroid Build Coastguard Worker {0}, 190*15dc779aSAndroid Build Coastguard Worker {0}}, 191*15dc779aSAndroid Build Coastguard Worker {48000, 192*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_768), 193*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_48_96), 194*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_768, 195*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_48_96, 196*15dc779aSAndroid Build Coastguard Worker {0}, 197*15dc779aSAndroid Build Coastguard Worker {0}}, 198*15dc779aSAndroid Build Coastguard Worker {64000, 199*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iusace_sfb_64_768), 200*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iusace_sfb_64_96), 201*15dc779aSAndroid Build Coastguard Worker iusace_sfb_64_768, 202*15dc779aSAndroid Build Coastguard Worker iusace_sfb_64_96, 203*15dc779aSAndroid Build Coastguard Worker {0}, 204*15dc779aSAndroid Build Coastguard Worker {0}}, 205*15dc779aSAndroid Build Coastguard Worker {88200, 206*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_96_768), 207*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_96_96), 208*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_96_768, 209*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_96_96, 210*15dc779aSAndroid Build Coastguard Worker {0}, 211*15dc779aSAndroid Build Coastguard Worker {0}}, 212*15dc779aSAndroid Build Coastguard Worker {96000, 213*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_96_768), 214*15dc779aSAndroid Build Coastguard Worker ARRAY_SIZE(iexheaac_sfb_96_96), 215*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_96_768, 216*15dc779aSAndroid Build Coastguard Worker iexheaac_sfb_96_96, 217*15dc779aSAndroid Build Coastguard Worker {0}, 218*15dc779aSAndroid Build Coastguard Worker {0}}}; 219