Compare commits

...
Sign in to create a new pull request.

16 commits

Author SHA1 Message Date
wrapper
1e660479c8 fix sbr 2
Some checks failed
CMake / build (push) Has been cancelled
2025-08-24 13:31:40 +07:00
wrapper
d2211d963d retweak
Some checks are pending
CMake / build (push) Waiting to run
2025-08-24 09:14:50 +07:00
wrapper
29b7a4eb4c fix
Some checks failed
CMake / build (push) Has been cancelled
2025-08-22 19:48:17 +07:00
wrapper
e33d5a718e make dual rate unlikely
Some checks are pending
CMake / build (push) Waiting to run
2025-08-22 19:35:23 +07:00
wrapper
c10720f05d Revert "add downsampled frequency scaling"
This reverts commit ce9ef54af5.
2025-08-22 19:34:35 +07:00
wrapper
ce9ef54af5 add downsampled frequency scaling
Some checks are pending
CMake / build (push) Waiting to run
2025-08-22 16:06:28 +07:00
wrapper
1feae4f6e0 again
Some checks failed
CMake / build (push) Has been cancelled
2025-08-15 14:18:49 +07:00
wrapper
90c8770efe fix aot detect
Some checks are pending
CMake / build (push) Waiting to run
2025-08-15 14:13:18 +07:00
wrapper
f398a98363 correct aot
Some checks are pending
CMake / build (push) Waiting to run
2025-08-15 13:13:14 +07:00
wrapper
ddcb11cbc8 fix mean division by 0
Some checks are pending
CMake / build (push) Waiting to run
2025-08-14 16:55:43 +07:00
wrapper
b828e89275 fix sbr setting
Some checks are pending
CMake / build (push) Waiting to run
2025-08-14 13:42:29 +07:00
wrapper
06aa3c1ba5 fix stop freq 2
Some checks are pending
CMake / build (push) Waiting to run
2025-08-14 10:58:44 +07:00
wrapper
68e3e867f8 fix stop freq
Some checks are pending
CMake / build (push) Waiting to run
2025-08-14 09:56:39 +07:00
wrapper
d3d43727c5 fix freq scaling again
Some checks failed
CMake / build (push) Has been cancelled
2025-08-13 07:17:36 +07:00
wrapper
b743f48ca1 going pic
Some checks failed
CMake / build (push) Has been cancelled
2025-08-11 17:27:52 +07:00
wrapper
80a67bda85 fix broken freq scaling
Some checks are pending
CMake / build (push) Waiting to run
2025-08-11 13:20:11 +07:00
9 changed files with 98 additions and 103 deletions

View file

@ -27,3 +27,5 @@ include("${XAAC_ROOT}/encoder/libxaacenc.cmake")
include("${XAAC_ROOT}/test/encoder/xaacenc.cmake")
include("${XAAC_ROOT}/fuzzer/xaac_enc_fuzzer.cmake")
set_property(TARGET libxaacenc PROPERTY POSITION_INDEPENDENT_CODE 1)
set_property(TARGET libxaacdec PROPERTY POSITION_INDEPENDENT_CODE 1)

View file

@ -940,6 +940,7 @@ IA_ERRORCODE ixheaacd_dec_api(pVOID p_ia_xheaac_dec_obj, WORD32 i_cmd,
} else {
*pui_value = p_obj_exhaacplus_dec->p_state_aac->audio_object_type;
}
if (*pui_value == AOT_AAC_LC) *pui_value = p_obj_exhaacplus_dec->p_state_aac->init_sbr_flag ? (p_obj_exhaacplus_dec->p_state_aac->init_ps_flag ? AOT_PS : AOT_SBR) : AOT_AAC_LC;
} else {
*pui_value = AOT_AAC_LC;
}
@ -2530,6 +2531,8 @@ IA_ERRORCODE ixheaacd_dec_init(
p_obj_exhaacplus_dec->aac_config.ui_n_channels = num_channels_1;
p_obj_exhaacplus_dec->aac_config.ui_samp_freq = sample_rate;
p_state_enhaacplus_dec->ui_init_done = 1;
p_state_enhaacplus_dec->init_sbr_flag = sbr_present_flag;
p_state_enhaacplus_dec->init_ps_flag = !p_obj_exhaacplus_dec->aac_config.ui_channel_mode;
memcpy(it_bit_buff, &temp_bit_buff, sizeof(struct ia_bit_buf_struct));

View file

@ -162,6 +162,8 @@ typedef struct ia_aac_dec_state_struct {
UWORD32 ui_input_over;
UWORD32 header_dec_done;
WORD32 frame_counter;
WORD32 init_sbr_flag;
WORD32 init_ps_flag;
ia_aac_decoder_struct *pstr_aac_dec_info[MAX_BS_ELEMENT];
UWORD32 ch_config;

View file

@ -1215,7 +1215,7 @@ static IA_ERRORCODE ixheaace_set_config_params(ixheaace_api_struct *pstr_api_str
}
pstr_api_struct->config[0].aac_config.full_bandwidth =
pstr_input_config->aac_config.full_bandwidth;
pstr_api_struct->config[0].aac_config.band_width =
pstr_api_struct->config[0].aac_config.band_width =
pstr_input_config->aac_config.bandwidth;
}
@ -2478,7 +2478,7 @@ static IA_ERRORCODE ia_enhaacplus_enc_init(ixheaace_api_struct *pstr_api_struct,
pstr_aac_config->bit_rate,
(pstr_api_struct->pstr_state->mps_enable
? 1
: pstr_api_struct->config[ele_idx].chmode_nchannels),
: pstr_aac_config->num_out_channels),
pstr_aac_config->sample_rate, &core_sample_rate,
pstr_api_struct->spectral_band_replication_tabs.ptr_qmf_tab,
pstr_api_struct->pstr_state->aot)) {

View file

@ -231,16 +231,16 @@ static WORD32 ixheaace_get_stop_freq(WORD32 fs, WORD32 stop_freq) {
switch (fs) {
case 16000:
k1_min = ixheaace_stop_freq_16k[0];
v_stop_freq = (WORD32 *)&ixheaace_stop_freq_16k[0];
k1_min = ixheaace_usac_stop_freq_16k[0];
v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_16k[0];
break;
case 22050:
k1_min = ixheaace_stop_freq_22k[0];
v_stop_freq = (WORD32 *)&ixheaace_stop_freq_22k[0];
k1_min = ixheaace_usac_stop_freq_22k[0];
v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_22k[0];
break;
case 24000:
k1_min = ixheaace_stop_freq_24k[0];
v_stop_freq = (WORD32 *)&ixheaace_stop_freq_24k[0];
k1_min = ixheaace_usac_stop_freq_24k[0];
v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_24k[0];
break;
case 32000:
k1_min = 32;
@ -260,6 +260,24 @@ static WORD32 ixheaace_get_stop_freq(WORD32 fs, WORD32 stop_freq) {
v_stop_freq = (WORD32 *)vector_stop_freq_48;
break;
case 64000:
k1_min = 20;
v_stop_freq = (WORD32 *)vector_stop_freq_64;
break;
case 88200:
k1_min = 15;
v_stop_freq = (WORD32 *)vector_stop_freq_88;
break;
case 96000:
k1_min = 13;
v_stop_freq = (WORD32 *)vector_stop_freq_96;
break;
default:
v_stop_freq = (WORD32 *)vector_stop_freq_32;
k1_min = 21; /* illegal fs */

View file

@ -967,7 +967,7 @@ ixheaace_env_open(ixheaace_pstr_sbr_enc *pstr_env_encoder, ixheaace_pstr_sbr_cfg
pstr_env_enc->str_sbr_cfg.stereo_mode =
(params->codec_settings.num_channels == 2) ? params->stereo_mode : IXHEAACE_SBR_MODE_MONO;
if (params->codec_settings.sample_freq <= 24000) {
if (1) {
pstr_env_enc->str_sbr_hdr.sample_rate_mode = IXHEAACE_DUAL_RATE;
if (params->sbr_codec == USAC_SBR) {
pstr_env_enc->str_sbr_cfg.sample_freq = 2 * params->codec_settings.sample_freq;

View file

@ -136,8 +136,10 @@ static VOID ia_enhaacplus_enc_qmf_based_noise_floor_detection(
mean_org += ton_org;
mean_sbr += ton_sbr;
}
mean_org /= (stop_channel - start_channel);
mean_sbr /= (stop_channel - start_channel);
if ((stop_channel - start_channel) > 0) {
mean_org /= (stop_channel - start_channel);
mean_sbr /= (stop_channel - start_channel);
}
}
if (mean_org < SBR_TON_MEAN_P0009 && mean_sbr < SBR_TON_MEAN_P0009) {

View file

@ -48,6 +48,9 @@ const WORD32 vector_offset_def[] = {0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 2
const WORD32 vector_stop_freq_32[14] = {32, 34, 36, 38, 40, 42, 44, 46, 49, 52, 55, 58, 61, 64};
const WORD32 vector_stop_freq_44[14] = {23, 25, 27, 29, 32, 34, 37, 40, 43, 47, 51, 55, 59, 64};
const WORD32 vector_stop_freq_48[14] = {21, 23, 25, 27, 30, 32, 35, 38, 42, 45, 49, 54, 59, 64};
const WORD32 vector_stop_freq_64[14] = {20, 22, 24, 26, 29, 31, 34, 37, 41, 45, 49, 54, 59, 64};
const WORD32 vector_stop_freq_88[14] = {15, 17, 19, 21, 23, 26, 29, 33, 37, 41, 46, 51, 57, 64};
const WORD32 vector_stop_freq_96[14] = {13, 15, 17, 19, 21, 24, 27, 31, 35, 39, 44, 50, 57, 64};
const ixheaace_str_ps_tab ia_enhaacplus_enc_ps_tab = {
/*a_hyb_res[3]*/
@ -741,7 +744,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
},
#else
{{{
/*** 8000hz 1ch ***/
/*** 8000hz 1ch SBR_AAC ***/
{8000, 10000, {7, 11}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{10000, 12000, {11, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{12000, 16000, {14, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -750,7 +753,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{32000, 48001, {14, 15}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 8000hz 2ch ***/
/*** 8000hz 2ch SBR_AAC ***/
{16000, 24000, {6, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {9, 11}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 36000, {11, 11}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -762,7 +765,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{0}}},
{{
/*** 11025hz 1ch ***/
/*** 11025hz 1ch SBR_AAC ***/
{8000, 10000, {5, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{10000, 12000, {8, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{12000, 16000, {12, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -770,10 +773,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{20000, 24000, {13, 13}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{24000, 32000, {14, 14}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{32000, 48000, {15, 15}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 64001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 66001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 11025hz 2ch ***/
/*** 11025hz 2ch SBR_AAC ***/
{16000, 24000, {7, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {10, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 36000, {12, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -781,11 +784,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{44000, 52000, {14, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{52000, 60000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 132301, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 12000hz 1ch ***/
/*** 12000hz 1ch SBR_AAC ***/
{8000, 10000, {4, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{10000, 12000, {7, 11}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{12000, 16000, {11, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -793,10 +796,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{20000, 24000, {12, 12}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{24000, 32000, {13, 13}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{32000, 48000, {14, 14}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 64001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 72001, {15, 15}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 12000hz 2ch ***/
/*** 12000hz 2ch SBR_AAC ***/
{16000, 24000, {6, 9}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {9, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 36000, {11, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -804,11 +807,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{44000, 52000, {13, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{52000, 60000, {14, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 144001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 16000hz 1ch ***/
/*** 16000hz 1ch SBR_AAC ***/
{6000, 8000, {0, 0}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{8000, 10000, {1, 0}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{10000, 12000, {2, 6}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -818,10 +821,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{22000, 28000, {10, 12}, 2, {2, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{28000, 36000, {12, 13}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 44000, {14, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{44000, 64001, {15, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{44000, 96001, {15, 13}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 16000hz 2ch ***/
/*** 16000hz 2ch SBR_AAC ***/
{16000, 24000, {4, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {8, 10}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 36000, {10, 12}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -829,11 +832,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{44000, 52000, {15, 13}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{52000, 60000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 76000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 128001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 192001, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 22050hz 1ch ***/
/*** 22050hz 1ch SBR_AAC ***/
{8000, 11369, {1, 1}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{11369, 16000, {3, 4}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{16000, 18000, {3, 5}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -841,12 +844,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{22000, 28000, {7, 8}, 2, {2, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{28000, 36000, {10, 9}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 44000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{44000, 52000, {13, 11}, 1, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO},
{52000, 68000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{68000, 96001, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{44000, 132151, {13, 12}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 22050hz 2ch ***/
/*** 22050hz 2ch SBR_AAC ***/
{16000, 24000, {2, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {5, 6}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 32000, {5, 8}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -855,11 +856,11 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{44000, 52000, {12, 9}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{52000, 60000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 101000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{101000, 128001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{101000, 264601, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 24000hz 1ch ***/
/*** 24000hz 1ch SBR_AAC ***/
{8000, 12000, {1, 1}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{12000, 16000, {3, 4}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{16000, 18000, {3, 5}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
@ -867,12 +868,10 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{22000, 28000, {7, 8}, 2, {2, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{28000, 36000, {10, 9}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 44000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{44000, 52000, {13, 11}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO},
{52000, 68000, {15, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{68000, 96001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{44000, 144001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 24000hz 2ch ***/
/*** 24000hz 2ch SBR_AAC ***/
{16000, 24000, {2, 1}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{24000, 28000, {5, 6}, 3, {1, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{28000, 36000, {7, 8}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
@ -880,92 +879,58 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{44000, 52000, {12, 9}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{52000, 60000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 76000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 128001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 32000hz 1ch ***/
/*** 32000hz 1ch SBR_AAC ***/
{24000, 36000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 60000, {7, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{60000, 72000, {9, 8}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{72000, 100000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{100000, 160001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{100000, 192001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 32000hz 2ch ***/
/*** 32000hz 2ch SBR_AAC ***/
{32000, 60000, {4, 4}, 3, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 80000, {11, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{80000, 112000, {12, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 144000, {13, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{144000, 256001, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{60000, 80000, {7, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{80000, 112000, {9, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 144000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{144000, 384001, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 44100hz 1ch ***/
{12000, 16000, {0, 0}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{16000, 22000, {1, 1}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{22000, 30000, {2, 3}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{30000, 36000, {4, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 40000, {5, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{40000, 48000, {6, 5}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 60000, {7, 6}, 1, {3, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{60000, 72000, {9, 6}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO},
{72000, 88000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{88000, 160001, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{160001, 288001, {13, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
/*** 44100hz 1ch SBR_AAC ***/
{24000, 36000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 60000, {7, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{60000, 72000, {9, 8}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{72000, 100000, {11, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{100000, 264601, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 44100hz 2ch ***/
{12000, 16000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{16000, 22000, {1, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{22000, 26000, {2, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{26000, 30000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{30000, 34000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{34000, 38000, {4, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{38000, 44000, {5, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{44000, 52000, {6, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{52000, 60000, {8, 5}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{60000, 68000, {9, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{68000, 76000, {10, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 90000, {11, 7}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{90000, 112000, {11, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 132000, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{132000, 180000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{180000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
/*** 44100hz 2ch SBR_AAC ***/
{32000, 60000, {4, 4}, 3, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 80000, {7, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{80000, 112000, {9, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 144000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{144000, 529201, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}},
{{
/*** 48000hz 1ch ***/
{12000, 16000, {0, 0}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{16000, 22000, {1, 1}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{22000, 30000, {2, 3}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{30000, 36000, {4, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 40000, {5, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{40000, 48000, {6, 5}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{48000, 60000, {7, 6}, 1, {3, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{60000, 72000, {9, 6}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO},
{72000, 88000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{88000, 160001, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
{160001, 288001, {13, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO},
/*** 48000hz 1ch SBR_AAC ***/
{24000, 36000, {4, 9}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{36000, 60000, {7, 10}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{60000, 72000, {9, 10}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{72000, 100000, {11, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{100000, 288001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO},
{0}},
{
/*** 48000hz 2ch ***/
{12000, 16000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{16000, 22000, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{22000, 26000, {1, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{26000, 30000, {2, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{30000, 34000, {3, 3}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{34000, 38000, {4, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{38000, 44000, {2, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{44000, 52000, {6, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{52000, 60000, {8, 5}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{60000, 68000, {9, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{68000, 76000, {10, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{76000, 90000, {11, 7}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{90000, 112000, {11, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 132000, {12, 9}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{132000, 180000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{180000, 288001, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
/*** 48000hz 2ch SBR_AAC ***/
{32000, 60000, {4, 9}, 3, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{60000, 80000, {7, 10}, 2, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC},
{80000, 112000, {9, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{112000, 144000, {11, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{144000, 576001, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT},
{0}}}
},
@ -1065,7 +1030,7 @@ const ixheaace_str_qmf_tabs ixheaace_qmf_tab = {
{{
/*** 12000hz 1ch ***/
{8000, 32000, {1, 0}, 3, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO},
{0}},
{0}},
{
{0}}},

View file

@ -181,6 +181,9 @@ extern const WORD32 vector_offset_def[];
extern const WORD32 vector_stop_freq_32[14];
extern const WORD32 vector_stop_freq_44[14];
extern const WORD32 vector_stop_freq_48[14];
extern const WORD32 vector_stop_freq_64[14];
extern const WORD32 vector_stop_freq_88[14];
extern const WORD32 vector_stop_freq_96[14];
/* Resampler tables */
extern const ixheaace_resampler_table ixheaace_resamp_2_to_1_iir_filt_params;