218 lines
13 KiB
C
218 lines
13 KiB
C
/******************************************************************************
|
|
* *
|
|
* 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}}};
|