From 1cb1e42801489d0654d11656da40273f3a343050 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 18 Feb 2025 09:42:42 +0100 Subject: [PATCH 1/7] Add fix NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING --- lib_com/options.h | 2 +- lib_dec/FEC_HQ_phase_ecu.c | 36 ++++++++++++++++--- scripts/config/self_test.prm | 5 +++ scripts/config/self_test_ltv.prm | 4 +++ .../dly_error_profiles/ep_5pct_longburst.g192 | 1 + 5 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 scripts/dly_error_profiles/ep_5pct_longburst.g192 diff --git a/lib_com/options.h b/lib_com/options.h index 1fe1532b56..169761ca1c 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -172,7 +172,7 @@ #define NONBE_1273_ISM_METADATA_COUNTER /* VA: issue 1273: fix counter overflow in ISM metadata encoder */ #define NONBE_1279_COUNTER_OVERFLOW /* VA: issue 1279: Avoid possible overflow of counter st->Nb_ACELP_frames */ #define NONBE_1244_FIX_SWB_BWE_MEMORY /* VA: issue 1244: fix to SWB BWE memory in case of switching from FB coding - pending a review by Huawei */ - +#define NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING /* Ericsson: issue 1180, corrected long term mute loop attnuation after 200ms in PhECU-PLC */ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/FEC_HQ_phase_ecu.c b/lib_dec/FEC_HQ_phase_ecu.c index c0d3764a33..d7021ccd34 100644 --- a/lib_dec/FEC_HQ_phase_ecu.c +++ b/lib_dec/FEC_HQ_phase_ecu.c @@ -263,10 +263,13 @@ static void trans_ana( const int16_t time_offs, /* i : Time offset */ const float est_mus_content, /* i : 0.0=speech_like ... 1.0=Music (==st->env_stab ) */ const int16_t last_fec, /* i : signal that previous frame was concealed with fec_alg*/ - float *alpha, /* o : Magnitude modification factors for fade to average */ - float *beta, /* o : Magnitude modification factors for fade to average */ - float *beta_mute, /* o : Factor for long-term mute */ - float Xavg[LGW_MAX] /* o : Frequency group average gain to fade to */ +#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING + const int16_t element_mode, /* i : element_mode req to handle EVS_MONO specific BE path */ +#endif + float *alpha, /* o : Magnitude modification factors for fade to average */ + float *beta, /* o : Magnitude modification factors for fade to average */ + float *beta_mute, /* o : Factor for long-term mute */ + float Xavg[LGW_MAX] /* o : Frequency group average gain to fade to */ ) { const float *w_hamm; @@ -416,10 +419,27 @@ static void trans_ana( { mag_chg[k] = 0; } +#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING + if ( element_mode != EVS_MONO ) + { + if ( k == 0 && burst_len > BETA_MUTE_THR ) /* beta_mute final long term attenuation adjusted only once per frame in the first sub-band, Ref Eq(184) in 26.447 */ + { + *beta_mute *= BETA_MUTE_FAC; + } + } + else + { + if ( burst_len > BETA_MUTE_THR ) /* legacy incorrect(too fast) EVS_MONO operation, still kept for BE. To be updated after EVS CR, ref Eq (184) in 26.447 */ + { + *beta_mute *= BETA_MUTE_FAC; + } + } +#else if ( burst_len > BETA_MUTE_THR ) { *beta_mute *= BETA_MUTE_FAC; } +#endif alpha[k] = mag_chg[k]; beta[k] = (float) ( sqrt( 1.0f - SQR( alpha[k] ) ) * *beta_mute ); if ( k >= LGW32k - 1 ) @@ -2094,7 +2114,11 @@ static void hq_phase_ecu( *time_offs = 0; /* IVAS reset of offset time counter, timeoffset variable later also used to calculate burst length */ } +#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING + trans_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec, element_mode, alpha, beta, beta_mute, Xavg ); +#else trans_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec, alpha, beta, beta_mute, Xavg ); +#endif spec_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, plocs, plocsi, num_p, X_sav, output_frame, bwidth, element_mode, &noise_fac, pcorr ); if ( prev_bfi && *last_fec ) @@ -2122,7 +2146,11 @@ static void hq_phase_ecu( *time_offs = (int16_t) INT16_MAX; /* high value --> continued muting will ensure that the now saturated seed is not creating tones */ } +#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING + trans_ana( prevsynth + 2 * output_frame - Lprot, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, 0, element_mode, alpha, beta, beta_mute, Xavg ); /* 1.0 stable-music, 0.0 speech-like */ +#else trans_ana( prevsynth + 2 * output_frame - Lprot, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, 0, alpha, beta, beta_mute, Xavg ); /* 1.0 stable-music, 0.0 speech-like */ +#endif } mvr2r( X_sav, X, Lprot ); diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index 84692916e1..addf12cc75 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -210,6 +210,11 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1 eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error ../IVAS_dec MONO 16 bit_error testv/stvST48n.wav_stereo_32000_48-16_DTX_MONO_FER5.tst +// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 5% with long bursts +../IVAS_cod -stereo 32000 48 testv/stvST48c.wav bit +eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct_longburst.g192 bit_error +../IVAS_dec STEREO 48 bit_error testv/stvST48c.wav_stereo_32000_48-48_STEREO_FER5_BURST.tst + // stereo at 48 kbps, 16kHz in, 16kHz out ../IVAS_cod -stereo 48000 16 testv/stvST16c.wav bit ../IVAS_dec STEREO 16 bit testv/stvST16c.wav_stereo_48000_16-16.tst diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index f39d56370b..33c7c5451a 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -209,6 +209,10 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1 ../IVAS_cod -stereo -dtx 32000 48 testv/ltv48_STEREO.wav bit eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error ../IVAS_dec MONO 16 bit_error testv/ltv48_STEREO.wav_stereo_32000_48-16_DTX_MONO_FER5.tst +// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 5% with long bursts +../IVAS_cod -stereo 32000 48 testv/ltv48_STEREO.wav bit +eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct_longburst.g192 bit_error +../IVAS_dec STEREO 48 bit_error testv/ltv48_STEREO.wav_stereo_32000_48-48_STEREO_FER5_BURST.tst // stereo at 48 kbps, 16kHz in, 16kHz out ../IVAS_cod -stereo 48000 16 testv/ltv16_STEREO.wav bit diff --git a/scripts/dly_error_profiles/ep_5pct_longburst.g192 b/scripts/dly_error_profiles/ep_5pct_longburst.g192 new file mode 100644 index 0000000000..8de3a8db11 --- /dev/null +++ b/scripts/dly_error_profiles/ep_5pct_longburst.g192 @@ -0,0 +1 @@ +!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k k!k!k \ No newline at end of file -- GitLab From 0fab107b9c4767092149781b1e8084daf64453d9 Mon Sep 17 00:00:00 2001 From: Erik Norvell Date: Tue, 18 Feb 2025 14:58:20 +0100 Subject: [PATCH 2/7] Fix error pattern and test case --- scripts/config/self_test.prm | 4 ++-- scripts/config/self_test_ltv.prm | 5 +++-- .../{ep_5pct_longburst.g192 => ep_18pct_longburst.g192} | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) rename scripts/dly_error_profiles/{ep_5pct_longburst.g192 => ep_18pct_longburst.g192} (77%) diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index addf12cc75..5b3df2cf08 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -210,9 +210,9 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1 eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error ../IVAS_dec MONO 16 bit_error testv/stvST48n.wav_stereo_32000_48-16_DTX_MONO_FER5.tst -// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 5% with long bursts +// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 18% with long bursts ../IVAS_cod -stereo 32000 48 testv/stvST48c.wav bit -eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct_longburst.g192 bit_error +eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_18pct_longburst.g192 bit_error ../IVAS_dec STEREO 48 bit_error testv/stvST48c.wav_stereo_32000_48-48_STEREO_FER5_BURST.tst // stereo at 48 kbps, 16kHz in, 16kHz out diff --git a/scripts/config/self_test_ltv.prm b/scripts/config/self_test_ltv.prm index 33c7c5451a..2aad90886b 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.prm @@ -209,9 +209,10 @@ eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g1 ../IVAS_cod -stereo -dtx 32000 48 testv/ltv48_STEREO.wav bit eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct.g192 bit_error ../IVAS_dec MONO 16 bit_error testv/ltv48_STEREO.wav_stereo_32000_48-16_DTX_MONO_FER5.tst -// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 5% with long bursts + +// stereo at 32 kbps, 48kHz in, 48kHz out, random FER at 18% with long bursts ../IVAS_cod -stereo 32000 48 testv/ltv48_STEREO.wav bit -eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_5pct_longburst.g192 bit_error +eid-xor -fer -vbr -bs g192 -ep g192 bit ../scripts/dly_error_profiles/ep_18pct_longburst.g192 bit_error ../IVAS_dec STEREO 48 bit_error testv/ltv48_STEREO.wav_stereo_32000_48-48_STEREO_FER5_BURST.tst // stereo at 48 kbps, 16kHz in, 16kHz out diff --git a/scripts/dly_error_profiles/ep_5pct_longburst.g192 b/scripts/dly_error_profiles/ep_18pct_longburst.g192 similarity index 77% rename from scripts/dly_error_profiles/ep_5pct_longburst.g192 rename to scripts/dly_error_profiles/ep_18pct_longburst.g192 index 8de3a8db11..8653cbf8c3 100644 --- a/scripts/dly_error_profiles/ep_5pct_longburst.g192 +++ b/scripts/dly_error_profiles/ep_18pct_longburst.g192 @@ -1 +1 @@ -!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k k!k!k \ No newline at end of file +!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k!k!k k!k!k \ No newline at end of file -- GitLab From 4a999b7f9c6f26372c20563148822364c466de74 Mon Sep 17 00:00:00 2001 From: Archit Tamarapu Date: Wed, 5 Mar 2025 11:46:31 +0100 Subject: [PATCH 3/7] update if condition in render config reading to fix compiler warning --- lib_util/render_config_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index a339aa30ac..cccf08f385 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2369,7 +2369,7 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; } - if ( i > pRenderConfigReader->nFG || &pRenderConfigReader->pFG[i] == NULL ) + if ( i > pRenderConfigReader->nFG || pRenderConfigReader->pFG == NULL ) { return IVAS_ERR_INVALID_RENDER_CONFIG; } -- GitLab From 6b0c4d0120c9a94476112fe2711fb646351a40dc Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Fri, 7 Mar 2025 15:51:33 +0100 Subject: [PATCH 4/7] fix mem number display in compelxity graph and popups --- .../index_complexity.html | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/ci/complexity_measurements/index_complexity.html b/ci/complexity_measurements/index_complexity.html index 71439a4c13..78dfe6294f 100755 --- a/ci/complexity_measurements/index_complexity.html +++ b/ci/complexity_measurements/index_complexity.html @@ -561,18 +561,17 @@ function WMOPS_perOP() { } - function memTickFormatter(v, axis) { - var decimals = axis.tickDecimals; - var str_val = ""; - if (v > 1000000) { - str_val = (v / 1000000).toFixed(decimals) + " MB"; - } - else if (v > 1000) { - str_val = (v / 1000).toFixed(decimals) + " kB"; - } - else { - str_val = v.toFixed(decimals) + " B"; - } + function memTickFormatter(val_bytes, axis) { + if (val_bytes == 0) return '0 B'; + + const decimals = 2; + const step = 1000; + const unit = ['B', 'KB', 'MB']; + + var idx = Math.floor(Math.log(val_bytes) / Math.log(step)); + var val_decimal = (val_bytes / Math.pow(step, idx)).toFixed(decimals); + var str_val = val_decimal + " " + unit[idx]; + return str_val; } @@ -629,10 +628,7 @@ function RAM() { var x = item.datapoint[0]; var y = item.datapoint[1]; var text = "" + item.series.id + "
" - text += 'Score: ' + y; - - text += " bytes"; - text += "
"; + text += 'Score: ' + memTickFormatter(y) + " (" + y + " B)" + "
"; if (x > 0) { var thisValue = parseFloat(y); @@ -769,10 +765,7 @@ function ROM() { var x = item.datapoint[0]; var y = item.datapoint[1]; var text = "" + item.series.id + "
" - text += 'Score: ' + y; - - text += " bytes"; - text += "
"; + text += 'Score: ' + memTickFormatter(y) + " (" + y + " B)" + "
"; if (x > 0) { var thisValue = parseFloat(y); -- GitLab From a208ac25f98061937048dbbb639406528ae8a155 Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Tue, 11 Mar 2025 10:53:16 +0100 Subject: [PATCH 5/7] Update for the fix, including a compiler switch --- lib_com/options.h | 1 + lib_util/render_config_reader.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib_com/options.h b/lib_com/options.h index be86aa6f64..5d1376c887 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -160,6 +160,7 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define TMP_FIX_1119_SPLIT_RENDERING_VOIP /* FhG: Add error check for unsupported config: split rendering with VoIP mode */ +#define FIX_1285_RENDER_CONFIG_PTR_COMPARE /* Philips: Warning about pointer comparison in the render config reader */ /* #################### End BE switches ################################## */ diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index cccf08f385..05244201da 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2369,7 +2369,11 @@ ivas_error RenderConfigReader_read( errorHandler( item, ERROR_VALUE_INVALID ); return IVAS_ERR_INVALID_RENDER_CONFIG; } - if ( i > pRenderConfigReader->nFG || pRenderConfigReader->pFG == NULL ) +#ifdef FIX_1285_RENDER_CONFIG_PTR_COMPARE + if ( i > pRenderConfigReader->nFG || pRenderConfigReader->pFG[i].pFc == NULL ) +#else + if ( i > pRenderConfigReader->nFG || &pRenderConfigReader->pFG[i] == NULL ) +#endif { return IVAS_ERR_INVALID_RENDER_CONFIG; } -- GitLab From e3d918190143b7ea13cbed51ab51a3bc159217ee Mon Sep 17 00:00:00 2001 From: Marek Szczerba Date: Tue, 11 Mar 2025 11:11:18 +0100 Subject: [PATCH 6/7] Updated check for index agains number of frequency grids available --- lib_util/render_config_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index 05244201da..377c1b22ad 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -2370,7 +2370,7 @@ ivas_error RenderConfigReader_read( return IVAS_ERR_INVALID_RENDER_CONFIG; } #ifdef FIX_1285_RENDER_CONFIG_PTR_COMPARE - if ( i > pRenderConfigReader->nFG || pRenderConfigReader->pFG[i].pFc == NULL ) + if ( i >= pRenderConfigReader->nFG || pRenderConfigReader->pFG[i].pFc == NULL ) #else if ( i > pRenderConfigReader->nFG || &pRenderConfigReader->pFG[i] == NULL ) #endif -- GitLab From 8a2f6083e841298f301461b84f9c9e69cd209f1d Mon Sep 17 00:00:00 2001 From: Jan Kiene Date: Mon, 17 Mar 2025 09:25:51 +0100 Subject: [PATCH 7/7] Add missing rate switching modes for ism ext MD --- scripts/config/ivas_modes.json | 184 +++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index 236802a126..72941df459 100644 --- a/scripts/config/ivas_modes.json +++ b/scripts/config/ivas_modes.json @@ -3601,6 +3601,52 @@ ] } }, + "ISM+1_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism", + "+1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "7_1": [], + "5_1_4": [], + "5_1_2": [], + "5_1": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "HOA3": [], + "HOA2": [], + "FOA": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "ISM1", + "table_name": "ISM+1@{table_bitrate} RS {bandwidth}", + "nummetadata": 1, + "metadatafilenames": [ + "stvISM{mdi}.csv" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_13k2_128k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_13k2_128k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_32k_128k.bin" + } + } + }, "ISM+1_b{bitrate}_dtx_{bandwidth}_cbr": { "encmodeoption": [ "-ism", @@ -3745,6 +3791,52 @@ ] } }, + "ISM+2_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism", + "+2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "7_1": [], + "5_1_4": [], + "5_1_2": [], + "5_1": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "HOA3": [], + "HOA2": [], + "FOA": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "ISM2", + "table_name": "ISM+2@{table_bitrate} RS {bandwidth}", + "nummetadata": 2, + "metadatafilenames": [ + "stvISM{mdi}.csv" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_16k4_256k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_16k4_256k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_32k_256k.bin" + } + } + }, "ISM+2_b{bitrate}_dtx_{bandwidth}_cbr": { "encmodeoption": [ "-dtx", @@ -3897,6 +3989,52 @@ ] } }, + "ISM+3_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism", + "+3" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "7_1": [], + "5_1_4": [], + "5_1_2": [], + "5_1": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "HOA3": [], + "HOA2": [], + "FOA": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "ISM3", + "table_name": "ISM+3@{table_bitrate} kbps RS {bandwidth}", + "nummetadata": 3, + "metadatafilenames": [ + "stvISM{mdi}.csv" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_24k4_384k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_24k4_384k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_32k_384k.bin" + } + } + }, "ISM+3_b{bitrate}_dtx_{bandwidth}_cbr": { "encmodeoption": [ "-dtx", @@ -4053,6 +4191,52 @@ ] } }, + "ISM+4_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism", + "+4" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "7_1": [], + "5_1_4": [], + "5_1_2": [], + "5_1": [], + "BINAURAL": [], + "BINAURAL_ROOM_IR": [], + "BINAURAL_ROOM_REVERB": [], + "HOA3": [], + "HOA2": [], + "FOA": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "ISM4", + "table_name": "ISM+4@{table_bitrate} kbps RS {bandwidth}", + "nummetadata": 4, + "metadatafilenames": [ + "stvISM{mdi}.csv" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_24k4_384k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_24k4_384k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_32k_384k.bin" + } + } + }, "ISM+4_b{bitrate}_dtx_{bandwidth}_cbr": { "encmodeoption": [ "-dtx", -- GitLab