diff --git a/decoder/ixheaacd_api.c b/decoder/ixheaacd_api.c index c4ae8e0..3504a10 100644 --- a/decoder/ixheaacd_api.c +++ b/decoder/ixheaacd_api.c @@ -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)); diff --git a/decoder/ixheaacd_struct_def.h b/decoder/ixheaacd_struct_def.h index fea3b56..8518407 100644 --- a/decoder/ixheaacd_struct_def.h +++ b/decoder/ixheaacd_struct_def.h @@ -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; diff --git a/encoder/ixheaace_api.c b/encoder/ixheaace_api.c index 22fe7e4..749cac6 100644 --- a/encoder/ixheaace_api.c +++ b/encoder/ixheaace_api.c @@ -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)) { diff --git a/encoder/ixheaace_sbr_freq_scaling.c b/encoder/ixheaace_sbr_freq_scaling.c index 192907e..1f08fbd 100644 --- a/encoder/ixheaace_sbr_freq_scaling.c +++ b/encoder/ixheaace_sbr_freq_scaling.c @@ -158,31 +158,31 @@ static WORD32 ixheaace_get_start_freq(WORD32 fs, WORD32 start_freq) { WORD32 minimum_k0; switch (fs) { - case 8000: + case 16000: minimum_k0 = 24; break; - case 11025: + case 22050: minimum_k0 = 17; break; - case 12000: - minimum_k0 = 16; - break; - case 16000: - minimum_k0 = 16; - break; - case 22050: - minimum_k0 = 12; - break; case 24000: - minimum_k0 = 11; + minimum_k0 = 16; break; case 32000: - minimum_k0 = 10; + minimum_k0 = 16; break; case 44100: - minimum_k0 = 7; + minimum_k0 = 12; break; case 48000: + minimum_k0 = 11; + break; + case 64000: + minimum_k0 = 10; + break; + case 88200: + minimum_k0 = 7; + break; + case 96000: minimum_k0 = 7; break; default: @@ -190,30 +190,30 @@ static WORD32 ixheaace_get_start_freq(WORD32 fs, WORD32 start_freq) { } switch (fs) { - case 8000: { + case 16000: { return (minimum_k0 + vector_offset_16k[start_freq]); } break; - case 11025: { + case 22050: { return (minimum_k0 + vector_offset_22k[start_freq]); } break; - case 12000: { + case 24000: { return (minimum_k0 + vector_offset_24k[start_freq]); } break; - case 16000: { + case 32000: { return (minimum_k0 + vector_offset_32k[start_freq]); } break; - case 22050: - case 24000: - case 32000: { + case 44100: + case 48000: + case 64000: { return (minimum_k0 + vector_offset_44_48_64[start_freq]); } break; - case 44100: - case 48000: { + case 88200: + case 96000: { return (minimum_k0 + vector_offset_88_96[start_freq]); } break; @@ -230,49 +230,49 @@ static WORD32 ixheaace_get_stop_freq(WORD32 fs, WORD32 stop_freq) { WORD32 v_dstop[13]; switch (fs) { - case 8000: - k1_min = ixheaace_stop_freq_16k[0]; - v_stop_freq = (WORD32 *)&ixheaace_stop_freq_16k[0]; - break; - case 11025: - k1_min = ixheaace_stop_freq_22k[0]; - v_stop_freq = (WORD32 *)&ixheaace_stop_freq_22k[0]; - break; - case 12000: - k1_min = ixheaace_stop_freq_24k[0]; - v_stop_freq = (WORD32 *)&ixheaace_stop_freq_24k[0]; - break; case 16000: + k1_min = ixheaace_usac_stop_freq_16k[0]; + v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_16k[0]; + break; + case 22050: + k1_min = ixheaace_usac_stop_freq_22k[0]; + v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_22k[0]; + break; + case 24000: + k1_min = ixheaace_usac_stop_freq_24k[0]; + v_stop_freq = (WORD32 *)&ixheaace_usac_stop_freq_24k[0]; + break; + case 32000: k1_min = 32; v_stop_freq = (WORD32 *)vector_stop_freq_32; break; - case 22050: + case 44100: k1_min = 23; v_stop_freq = (WORD32 *)vector_stop_freq_44; break; - case 24000: + case 48000: k1_min = 21; v_stop_freq = (WORD32 *)vector_stop_freq_48; break; - case 32000: + case 64000: k1_min = 20; v_stop_freq = (WORD32 *)vector_stop_freq_64; break; - case 44100: + case 88200: k1_min = 15; v_stop_freq = (WORD32 *)vector_stop_freq_88; break; - case 48000: + case 96000: k1_min = 13; v_stop_freq = (WORD32 *)vector_stop_freq_96; diff --git a/encoder/ixheaace_sbr_main.c b/encoder/ixheaace_sbr_main.c index 9e13b13..62928da 100644 --- a/encoder/ixheaace_sbr_main.c +++ b/encoder/ixheaace_sbr_main.c @@ -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; diff --git a/encoder/ixheaace_sbr_noise_floor_est.c b/encoder/ixheaace_sbr_noise_floor_est.c index c5fcd99..344d2b0 100644 --- a/encoder/ixheaace_sbr_noise_floor_est.c +++ b/encoder/ixheaace_sbr_noise_floor_est.c @@ -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) { diff --git a/encoder/ixheaace_sbr_rom.c b/encoder/ixheaace_sbr_rom.c index cad1a81..bb52192 100644 --- a/encoder/ixheaace_sbr_rom.c +++ b/encoder/ixheaace_sbr_rom.c @@ -48,7 +48,7 @@ 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, 28, 31, 34, 37, 41, 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}; @@ -807,8 +807,7 @@ 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, 128000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {128000, 144001, {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}}}, {{ @@ -833,8 +832,7 @@ 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, 128000, {15, 13}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {128000, 192001, {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}}}, {{ @@ -846,10 +844,7 @@ 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, 96000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {96000, 132151, {14, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {44000, 132151, {13, 12}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { /*** 22050hz 2ch SBR_AAC ***/ @@ -861,8 +856,7 @@ 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, 128000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {128000, 264601, {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}}}, {{ @@ -874,10 +868,7 @@ 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, 96000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {96000, 144001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {44000, 144001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { /*** 24000hz 2ch SBR_AAC ***/ @@ -888,119 +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, 128000, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {128000, 288001, {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 SBR_AAC ***/ - {10000, 15000, {0, 0}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {15000, 19000, {1, 5}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {19000, 22000, {2, 5}, 0, {1, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {22000, 27000, {3, 6}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {27000, 30000, {4, 7}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {30000, 33000, {5, 8}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {33000, 36000, {6, 8}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {36000, 39000, {7, 8}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {39000, 42000, {8, 9}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {42000, 46000, {9, 9}, 1, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {46000, 51500, {10, 9}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {51500, 58000, {11, 10}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {58000, 68000, {12, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {68000, 78000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {78000, 90000, {14, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {90000, 192001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {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, 192001, {13, 11}, 1, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, {0}}, { /*** 32000hz 2ch SBR_AAC ***/ - {16000, 28000, {0, 5}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {28000, 32000, {1, 5}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {32000, 60000, {4, 6}, 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, 156000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {156000, 180000, {14, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {180000, 384001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {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, 384001, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, {0}}}, {{ /*** 44100hz 1ch SBR_AAC ***/ - {10000, 15000, {0, 0}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {15000, 19000, {1, 1}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {19000, 22000, {2, 2}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {22000, 27000, {3, 3}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {27000, 30000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {30000, 33000, {5, 5}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {33000, 38000, {6, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {38000, 46000, {7, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {46000, 50000, {8, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {50000, 62000, {9, 8}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {62000, 79000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {79000, 94000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {94000, 110000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {110000, 150000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {150000, 220000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {220000, 264601, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {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 SBR_AAC ***/ - {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, {0, 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, {1, 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, 224000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {224000, 312000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {312000, 529201, {15, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {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 SBR_AAC ***/ - {10000, 15000, {0, 0}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {15000, 19000, {1, 4}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {19000, 22000, {2, 4}, 0, {1, 0, 6}, IXHEAACE_SBR_MODE_MONO}, - {22000, 27000, {3, 4}, 0, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {27000, 30000, {4, 4}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {30000, 33000, {5, 5}, 3, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {33000, 38000, {6, 6}, 2, {2, 0, 3}, IXHEAACE_SBR_MODE_MONO}, - {38000, 46000, {7, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {46000, 50000, {8, 7}, 2, {2, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {50000, 62000, {9, 8}, 1, {3, 0, 0}, IXHEAACE_SBR_MODE_MONO}, - {62000, 79000, {10, 8}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {79000, 94000, {11, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {94000, 110000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {110000, 150000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {150000, 220000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, - {220000, 288001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_MONO}, + {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 SBR_AAC ***/ - {12000, 25500, {0, 0}, 0, {2, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {25500, 30000, {1, 1}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {30000, 34500, {2, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {34500, 39000, {3, 4}, 0, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {39000, 43500, {4, 4}, 3, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {43500, 48000, {5, 5}, 3, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {48000, 56000, {6, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {56000, 66000, {7, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_SWITCH_LRC}, - {66000, 80000, {8, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {80000, 94000, {9, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {94000, 112000, {10, 6}, 2, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {112000, 144000, {11, 10}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {144000, 172000, {12, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {172000, 256000, {13, 11}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {256000, 412000, {14, 12}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, - {412000, 576001, {15, 14}, 1, {3, 0, -3}, IXHEAACE_SBR_MODE_LEFT_RIGHT}, + {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}}} }, @@ -1100,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}}},