Loading lib_com/ivas_prot.h +33 −11 Original line number Diff line number Diff line Loading @@ -5450,6 +5450,28 @@ void ivas_lfe_synth_with_filters( ); #ifdef FIX_572_LFE_LPF_ENC /*----------------------------------------------------------------------------------* * LFE encoder low pass filter prototypes *----------------------------------------------------------------------------------*/ ivas_error ivas_create_lfe_lpf_enc( ivas_filters_process_state_t **hLfeLpf, /* o : LFE LPF handle */ const int32_t input_Fs /* i : input sampling rate */ ); void ivas_lfe_lpf_enc_close( ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */ ); void ivas_lfe_lpf_enc_apply( ivas_filters_process_state_t *hLfeLpf, /* i/o: LFE LPF handle */ float data_lfe_ch[], /* i/o: LFE signal */ const int16_t input_frame /* i : input frame length per channel */ ); #endif /*----------------------------------------------------------------------------------* * LFE Coding prototypes *----------------------------------------------------------------------------------*/ Loading lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -152,8 +152,12 @@ #define FIX_565_SBA_BURST_IN_FEC /* VA: Issue 565: Fix noise burst during FEC, due to wrong total_brate initialization */ #define FIX_562_ISM2_64KBPS /* VA: issue 562: fix ISM2 at 64kbps issue */ #define FIX_559_EXTL_IGF_MISMATCH /* VA: issue 559: fix mismatch between st->extl and st->igf observed as crash in PlanarSBA bitrate switching */ #define FIX_572_LFE_LPF_ENC /* FhG: issue 572: always apply the low pass filter to the LFE channel */ #define FIX_QMETA_SID_5k2 /* Nokia: Issue 137: enable using full 5.2k bitrate in MASA SID */ #define FIX_578_PARAMMC_ILD_BS /* FhG: Issue 578: transmitt also center ILD in band 0 when LFE is active in 3TC ParamMC */ #define FIX_UNCLR_ISSUE /* VoiceAge: issue 574: Fix UNCLR mis-classifications in noisy speech stereo */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading lib_dec/ivas_dirac_dec.c +1 −5 Original line number Diff line number Diff line Loading @@ -421,11 +421,7 @@ ivas_error ivas_dirac_dec_config( return IVAS_ERR_OK; } if ( nchan_transport_orig > 2 && hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC #ifdef FIX_DIRAC_LS_SYNTHESIS_CONFIG && !hodirac_flag #endif ) if ( nchan_transport_orig > 2 && hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC && !hodirac_flag ) { hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; hDirAC->panningConf = DIRAC_PANNING_VBAP; Loading lib_dec/ivas_jbm_dec.c +2 −10 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ ivas_error ivas_jbm_dec_tc( int16_t n, output_frame, nchan_out; Decoder_State *st; /* used for bitstream handling */ float output[MAX_TRANSPORT_CHANNELS][L_FRAME48k]; /* 'float' buffer for transport channels, MAX_TRANSPORT_CHANNELS channels */ int16_t nchan_remapped, hodirac_flag; int16_t nchan_remapped; float output_lfe_ch[L_FRAME48k]; int16_t nb_bits_metadata[MAX_SCE]; int32_t output_Fs, ivas_total_brate; Loading @@ -95,7 +95,6 @@ ivas_error ivas_jbm_dec_tc( nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; output_config = st_ivas->hDecoderConfig->output_config; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; hodirac_flag = ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ); output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); Loading Loading @@ -188,16 +187,10 @@ ivas_error ivas_jbm_dec_tc( set_s( nb_bits_metadata, 0, MAX_SCE ); /* read parameters from the bitstream */ if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; if ( st_ivas->ivas_format == SBA_FORMAT ) { ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], hodirac_flag, 0 ); } else { if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading @@ -210,7 +203,6 @@ ivas_error ivas_jbm_dec_tc( } #endif } } else if ( st_ivas->ivas_format == SBA_FORMAT ) { if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) Loading lib_dec/ivas_mc_param_dec.c +18 −4 Original line number Diff line number Diff line Loading @@ -1286,7 +1286,6 @@ void ivas_param_mc_dec_read_BS( num_lfe_bands = 0; } if ( hMetadataPMC->flag_use_adaptive_icc_map == 1 ) { int16_t icc_mapping_index[PARAM_MC_SZ_ICC_MAP]; Loading Loading @@ -3055,11 +3054,19 @@ static void ivas_param_mc_bs_decode_parameter_values( int16_t i, j, k; float dequant_seq[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; float dequant_ordered[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; #ifdef FIX_578_PARAMMC_ILD_BS int16_t n_lfe_idx; #endif range_coding = bit_buffer[( *bit_pos )++]; /* Decoding the sequence */ #ifdef FIX_578_PARAMMC_ILD_BS n_lfe_idx = map_size - map_size_wo_lfe; sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands * n_lfe_idx; #else sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands; #endif set_s( idx, 0, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); set_zero( dequant_ordered, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); Loading Loading @@ -3120,7 +3127,14 @@ static void ivas_param_mc_bs_decode_parameter_values( for ( i = 0; i < num_lfe_bands; i++ ) { #ifdef FIX_578_PARAMMC_ILD_BS for ( j = 0; j < n_lfe_idx; j++ ) { dequant_ordered[map_size - n_lfe_idx + j + i * map_size] = dequant_seq[k++]; } #else dequant_ordered[map_size - 1 + i * map_size] = dequant_seq[k++]; #endif } if ( !( *BER_detect ) ) Loading Loading
lib_com/ivas_prot.h +33 −11 Original line number Diff line number Diff line Loading @@ -5450,6 +5450,28 @@ void ivas_lfe_synth_with_filters( ); #ifdef FIX_572_LFE_LPF_ENC /*----------------------------------------------------------------------------------* * LFE encoder low pass filter prototypes *----------------------------------------------------------------------------------*/ ivas_error ivas_create_lfe_lpf_enc( ivas_filters_process_state_t **hLfeLpf, /* o : LFE LPF handle */ const int32_t input_Fs /* i : input sampling rate */ ); void ivas_lfe_lpf_enc_close( ivas_filters_process_state_t **hLfeLpf /* i/o: LFE LPF handle */ ); void ivas_lfe_lpf_enc_apply( ivas_filters_process_state_t *hLfeLpf, /* i/o: LFE LPF handle */ float data_lfe_ch[], /* i/o: LFE signal */ const int16_t input_frame /* i : input frame length per channel */ ); #endif /*----------------------------------------------------------------------------------* * LFE Coding prototypes *----------------------------------------------------------------------------------*/ Loading
lib_com/options.h +4 −0 Original line number Diff line number Diff line Loading @@ -152,8 +152,12 @@ #define FIX_565_SBA_BURST_IN_FEC /* VA: Issue 565: Fix noise burst during FEC, due to wrong total_brate initialization */ #define FIX_562_ISM2_64KBPS /* VA: issue 562: fix ISM2 at 64kbps issue */ #define FIX_559_EXTL_IGF_MISMATCH /* VA: issue 559: fix mismatch between st->extl and st->igf observed as crash in PlanarSBA bitrate switching */ #define FIX_572_LFE_LPF_ENC /* FhG: issue 572: always apply the low pass filter to the LFE channel */ #define FIX_QMETA_SID_5k2 /* Nokia: Issue 137: enable using full 5.2k bitrate in MASA SID */ #define FIX_578_PARAMMC_ILD_BS /* FhG: Issue 578: transmitt also center ILD in band 0 when LFE is active in 3TC ParamMC */ #define FIX_UNCLR_ISSUE /* VoiceAge: issue 574: Fix UNCLR mis-classifications in noisy speech stereo */ /* ################## End DEVELOPMENT switches ######################### */ /* clang-format on */ Loading
lib_dec/ivas_dirac_dec.c +1 −5 Original line number Diff line number Diff line Loading @@ -421,11 +421,7 @@ ivas_error ivas_dirac_dec_config( return IVAS_ERR_OK; } if ( nchan_transport_orig > 2 && hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC #ifdef FIX_DIRAC_LS_SYNTHESIS_CONFIG && !hodirac_flag #endif ) if ( nchan_transport_orig > 2 && hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC && !hodirac_flag ) { hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; hDirAC->panningConf = DIRAC_PANNING_VBAP; Loading
lib_dec/ivas_jbm_dec.c +2 −10 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ ivas_error ivas_jbm_dec_tc( int16_t n, output_frame, nchan_out; Decoder_State *st; /* used for bitstream handling */ float output[MAX_TRANSPORT_CHANNELS][L_FRAME48k]; /* 'float' buffer for transport channels, MAX_TRANSPORT_CHANNELS channels */ int16_t nchan_remapped, hodirac_flag; int16_t nchan_remapped; float output_lfe_ch[L_FRAME48k]; int16_t nb_bits_metadata[MAX_SCE]; int32_t output_Fs, ivas_total_brate; Loading @@ -95,7 +95,6 @@ ivas_error ivas_jbm_dec_tc( nchan_out = st_ivas->hTcBuffer->nchan_transport_jbm; output_config = st_ivas->hDecoderConfig->output_config; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; hodirac_flag = ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ); output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); Loading Loading @@ -188,16 +187,10 @@ ivas_error ivas_jbm_dec_tc( set_s( nb_bits_metadata, 0, MAX_SCE ); /* read parameters from the bitstream */ if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hQMetaData != NULL ) { st = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[0]->hCoreCoder[0] : st_ivas->hCPE[0]->hCoreCoder[0]; if ( st_ivas->ivas_format == SBA_FORMAT ) { ivas_dirac_dec_read_BS( ivas_total_brate, st, st_ivas->hDirAC, st_ivas->hQMetaData, &nb_bits_metadata[0], hodirac_flag, 0 ); } else { if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading @@ -210,7 +203,6 @@ ivas_error ivas_jbm_dec_tc( } #endif } } else if ( st_ivas->ivas_format == SBA_FORMAT ) { if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) Loading
lib_dec/ivas_mc_param_dec.c +18 −4 Original line number Diff line number Diff line Loading @@ -1286,7 +1286,6 @@ void ivas_param_mc_dec_read_BS( num_lfe_bands = 0; } if ( hMetadataPMC->flag_use_adaptive_icc_map == 1 ) { int16_t icc_mapping_index[PARAM_MC_SZ_ICC_MAP]; Loading Loading @@ -3055,11 +3054,19 @@ static void ivas_param_mc_bs_decode_parameter_values( int16_t i, j, k; float dequant_seq[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; float dequant_ordered[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; #ifdef FIX_578_PARAMMC_ILD_BS int16_t n_lfe_idx; #endif range_coding = bit_buffer[( *bit_pos )++]; /* Decoding the sequence */ #ifdef FIX_578_PARAMMC_ILD_BS n_lfe_idx = map_size - map_size_wo_lfe; sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands * n_lfe_idx; #else sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands; #endif set_s( idx, 0, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); set_zero( dequant_ordered, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); Loading Loading @@ -3120,7 +3127,14 @@ static void ivas_param_mc_bs_decode_parameter_values( for ( i = 0; i < num_lfe_bands; i++ ) { #ifdef FIX_578_PARAMMC_ILD_BS for ( j = 0; j < n_lfe_idx; j++ ) { dequant_ordered[map_size - n_lfe_idx + j + i * map_size] = dequant_seq[k++]; } #else dequant_ordered[map_size - 1 + i * map_size] = dequant_seq[k++]; #endif } if ( !( *BER_detect ) ) Loading