fix ASC, fix full bandwidth for non USAC

This commit is contained in:
wrapper 2025-08-04 20:50:17 +07:00
parent 1f798f1cc5
commit 433d6c3eb6
2 changed files with 8 additions and 10 deletions

View file

@ -412,6 +412,7 @@ WORD32 ixheaace_get_audiospecific_config_bytes(
pstr_audio_specific_config->sampling_frequency /= 2;
if ((AOT_SBR == aot) || (AOT_PS == aot)) {
ext_aot = aot;
aot = AOT_AAC_LC;
}
}
@ -460,9 +461,12 @@ WORD32 ixheaace_get_audiospecific_config_bytes(
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff,
(pstr_audio_specific_config->channel_configuration), 4);
if (ext_aot != -1) aot = ext_aot;
if ((AOT_SBR == aot) || (AOT_PS == aot)) {
ext_aot = AOT_SBR;
sbr_present_flag = 1;
tmp = 0x0f;
for (i = 0; i < sizeof(ia_sampl_freq_table) / sizeof(ia_sampl_freq_table[0]); i++) {
if (ia_sampl_freq_table[i] == pstr_audio_specific_config->ext_sampling_frequency) {
@ -470,18 +474,12 @@ WORD32 ixheaace_get_audiospecific_config_bytes(
break;
}
}
pstr_audio_specific_config->ext_samp_freq_index = (UWORD32)tmp;
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff,
(pstr_audio_specific_config->ext_samp_freq_index), 4);
if (pstr_audio_specific_config->ext_samp_freq_index == 0xf) {
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff,
(pstr_audio_specific_config->ext_sampling_frequency), 24);
}
if (AOT_PS == aot) {
ps_present_flag = 1;
}
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff, AOT_AAC_LC, 5);
}
switch (aot) {
case AOT_AAC_ELD: {
@ -506,7 +504,7 @@ WORD32 ixheaace_get_audiospecific_config_bytes(
ext_id = 0x2b7;
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff, ext_id, 11);
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff, aot, 5);
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff, ext_aot, 5);
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff, sbr_present_flag, 1);
if (sbr_present_flag) {
bit_cnt += iusace_write_bits_buf(pstr_it_bit_buff,

View file

@ -374,7 +374,7 @@ IA_ERRORCODE ia_enhaacplus_enc_aac_enc_open(iexheaac_encoder_str **ppstr_exheaac
WORD32 tns_mask = config.use_tns;
if (config.full_bandwidth) {
pstr_exheaac_encoder->config.band_width = config.core_sample_rate >> 2;
pstr_exheaac_encoder->config.band_width = config.core_sample_rate >> (aot == AOT_USAC ? 2 : 1);
} else {
ixheaace_determine_bandwidth(pstr_exheaac_encoder->config.band_width, config.bit_rate,
config.core_sample_rate, pstr_element_info->n_channels_in_el,