/****************************************************************************** * * * Copyright (C) 2023 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 */ #include "iusace_type_def.h" #include "iusace_cnst.h" #include "iusace_tns_usac.h" #include "iusace_psy_mod.h" #include "iusace_psy_utils.h" const WORD16 iusace_sfb_96_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, 240, 276, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024}; const WORD16 iexheaac_sfb_96_768[] = { 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, 240, 276, 320, 384, 448, 512, 576, 640, 704, 768}; const WORD16 iusace_sfb_96_128[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128}; const WORD16 iexheaac_sfb_96_96[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 96}; const WORD16 iusace_sfb_64_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 192, 216, 240, 268, 304, 344, 384, 424, 464, 504, 544, 584, 624, 664, 704, 744, 784, 824, 864, 904, 944, 984, 1024}; const WORD16 iusace_sfb_64_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 156, 172, 192, 216, 240, 268, 304, 344, 384, 424, 464, 504, 544, 584, 624, 664, 704, 744, 768}; const WORD16 iusace_sfb_64_128[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 128}; const WORD16 iusace_sfb_64_96[] = {4, 8, 12, 16, 20, 24, 32, 40, 48, 64, 92, 96}; const WORD16 iusace_sfb_48_1024[] = { 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 1024}; const WORD16 iexheaac_sfb_48_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768}; const WORD16 iusace_sfb_48_128[] = {4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96, 112, 128}; const WORD16 iexheaac_sfb_48_96[] = {4, 8, 12, 16, 20, 28, 36, 44, 56, 68, 80, 96}; const WORD16 iusace_sfb_32_1024[] = { 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024}; const WORD16 iexheaac_sfb_32_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, 640, 672, 704, 736, 768}; const WORD16 iusace_sfb_24_1024[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, 432, 468, 508, 552, 600, 652, 704, 768, 832, 896, 960, 1024}; const WORD16 iexheaac_sfb_24_768[] = {4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, 432, 468, 508, 552, 600, 652, 704, 768}; const WORD16 iusace_sfb_24_128[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 108, 128}; const WORD16 iexheaac_sfb_24_96[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 64, 76, 92, 96}; const WORD16 iusace_sfb_16_1024[] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124, 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344, 368, 396, 424, 456, 492, 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024}; const WORD16 iexheaac_sfb_16_768[] = {8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124, 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344, 368, 396, 424, 456, 492, 532, 572, 616, 664, 716, 768}; const WORD16 iusace_sfb_16_128[] = {4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 108, 128}; const WORD16 iexheaac_sfb_16_96[] = {4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 60, 72, 88, 96}; const WORD16 iusace_sfb_8_1024[] = {12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172, 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, 448, 476, 508, 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024}; const WORD16 iusace_sfb_8_128[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 108, 128}; const WORD16 iusace_sfb_8_768[] = { 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 172, 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, 448, 476, 508, 544, 580, 620, 664, 712, 764, 768}; const WORD16 iusace_sfb_8_96[] = {4, 8, 12, 16, 20, 24, 28, 36, 44, 52, 60, 72, 88, 96}; ia_sfb_info_struct iusace_sfb_info_1024[12] = { {8000, 40, 15, iusace_sfb_8_1024, iusace_sfb_8_128, {0}, {0}}, {11025, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, {12000, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, {16000, 43, 15, iusace_sfb_16_1024, iusace_sfb_16_128, {0}, {0}}, {22050, 47, 15, iusace_sfb_24_1024, iusace_sfb_24_128, {0}, {0}}, {24000, 47, 15, iusace_sfb_24_1024, iusace_sfb_24_128, {0}, {0}}, {32000, 51, 14, iusace_sfb_32_1024, iusace_sfb_48_128, {0}, {0}}, {44100, 49, 14, iusace_sfb_48_1024, iusace_sfb_48_128, {0}, {0}}, {48000, 49, 14, iusace_sfb_48_1024, iusace_sfb_48_128, {0}, {0}}, {64000, 47, 12, iusace_sfb_64_1024, iusace_sfb_64_128, {0}, {0}}, {88200, 41, 12, iusace_sfb_64_1024, iusace_sfb_64_128, {0}, {0}}, {96000, 41, 12, iusace_sfb_96_1024, iusace_sfb_96_128, {0}, {0}}}; #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) ia_sfb_info_struct iusace_sfb_info_768[12] = {{8000, ARRAY_SIZE(iusace_sfb_8_768), ARRAY_SIZE(iusace_sfb_8_96), iusace_sfb_8_768, iusace_sfb_8_96, {0}, {0}}, {11025, ARRAY_SIZE(iexheaac_sfb_16_768), ARRAY_SIZE(iexheaac_sfb_16_96), iexheaac_sfb_16_768, iexheaac_sfb_16_96, {0}, {0}}, {12000, ARRAY_SIZE(iexheaac_sfb_16_768), ARRAY_SIZE(iexheaac_sfb_16_96), iexheaac_sfb_16_768, iexheaac_sfb_16_96, {0}, {0}}, {16000, ARRAY_SIZE(iexheaac_sfb_16_768), ARRAY_SIZE(iexheaac_sfb_16_96), iexheaac_sfb_16_768, iexheaac_sfb_16_96, {0}, {0}}, {22050, ARRAY_SIZE(iexheaac_sfb_24_768), ARRAY_SIZE(iexheaac_sfb_24_96), iexheaac_sfb_24_768, iexheaac_sfb_24_96, {0}, {0}}, {24000, ARRAY_SIZE(iexheaac_sfb_24_768), ARRAY_SIZE(iexheaac_sfb_24_96), iexheaac_sfb_24_768, iexheaac_sfb_24_96, {0}, {0}}, {32000, ARRAY_SIZE(iexheaac_sfb_48_768), ARRAY_SIZE(iexheaac_sfb_48_96), iexheaac_sfb_48_768, iexheaac_sfb_48_96, {0}, {0}}, {44100, ARRAY_SIZE(iexheaac_sfb_48_768), ARRAY_SIZE(iexheaac_sfb_48_96), iexheaac_sfb_48_768, iexheaac_sfb_48_96, {0}, {0}}, {48000, ARRAY_SIZE(iexheaac_sfb_48_768), ARRAY_SIZE(iexheaac_sfb_48_96), iexheaac_sfb_48_768, iexheaac_sfb_48_96, {0}, {0}}, {64000, ARRAY_SIZE(iusace_sfb_64_768), ARRAY_SIZE(iusace_sfb_64_96), iusace_sfb_64_768, iusace_sfb_64_96, {0}, {0}}, {88200, ARRAY_SIZE(iexheaac_sfb_96_768), ARRAY_SIZE(iexheaac_sfb_96_96), iexheaac_sfb_96_768, iexheaac_sfb_96_96, {0}, {0}}, {96000, ARRAY_SIZE(iexheaac_sfb_96_768), ARRAY_SIZE(iexheaac_sfb_96_96), iexheaac_sfb_96_768, iexheaac_sfb_96_96, {0}, {0}}};