diff --git a/ci/complexity_measurements/index_complexity.html b/ci/complexity_measurements/index_complexity.html index 71439a4c130f3c58a75d46ce91d84216192cdc1f..78dfe6294f18e5cb99a6c464b55fa83e3cbd6cd9 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); diff --git a/lib_com/options.h b/lib_com/options.h index be86aa6f646b1587e9cc52be538699fa131b34c0..6dea2ea9d7bfba2b2ffc7b720c8e6266146cdb1a 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 ################################## */ @@ -172,9 +173,9 @@ #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 */ #define NONBE_FIX_1277_EVS_DTX_HIGH_RATE_THRESHOLD /* VA/Eri: issue 1277: Fix Mismatch in DTX high-rate threshold between EVS float and BASOP */ - #define NONBE_1231_BASOP_819_THRESHOLD_MASA2TOTAL /* Nokia: add fix for precision limitation in comparison with masa2total energy ratio threshold to be aligned with BASOP*/ /* ##################### End NON-BE switches ########################### */ diff --git a/lib_dec/FEC_HQ_phase_ecu.c b/lib_dec/FEC_HQ_phase_ecu.c index b908d7668d43cace9ebfc8f9f9b4f8c3f70e7a58..7e7e5d2f07b5485f17a48c28220ba3d43b28a841 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/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index a339aa30ace617b08d70c82d281ef42ca633ca7f..377c1b22ad0e75e29d7f6147a2ec5440545c234d 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; } +#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; } diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index 236802a1268bcdd55fdaf95bf242eade8d3d48e6..72941df4593e4ed56c1ddb745218a483eb73df9f 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", diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index 84692916e10226eb0a7064ec92f69a98a1474c95..5b3df2cf08b1e7962b1076ee4a65a748c408e5c3 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 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_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 ../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 f39d56370b596004e39d1f13898ff01fe54bef93..2aad90886b5a3bc9801cf867af46dff8cb95b0b9 100644 --- a/scripts/config/self_test_ltv.prm +++ b/scripts/config/self_test_ltv.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/ltv48_STEREO.wav_stereo_32000_48-16_DTX_MONO_FER5.tst +// 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_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 ../IVAS_cod -stereo 48000 16 testv/ltv16_STEREO.wav bit ../IVAS_dec STEREO 16 bit testv/ltv16_STEREO.wav_stereo_48000_16-16.tst diff --git a/scripts/dly_error_profiles/ep_18pct_longburst.g192 b/scripts/dly_error_profiles/ep_18pct_longburst.g192 new file mode 100644 index 0000000000000000000000000000000000000000..8653cbf8c31f565696245bfa66d2f1db10974757 --- /dev/null +++ b/scripts/dly_error_profiles/ep_18pct_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