From 2fa1637c85d4e0eb003b23f9ec84468429bdd651 Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Tue, 15 Apr 2025 13:21:16 +0300 Subject: [PATCH 1/2] Port changes from PC float MR 1292 on top of main-pc --- lib_com/ivas_cnst.h | 4 ++++ lib_com/options.h | 1 + lib_enc/ivas_ism_metadata_enc_fx.c | 2 ++ lib_enc/ivas_omasa_enc_fx.c | 33 ++++++++++++++++++++++++++++++ lib_enc/ivas_stat_enc.h | 3 +++ 5 files changed, 43 insertions(+) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 2abb790f1..3f6a1fd84 100644 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -360,6 +360,10 @@ typedef enum #define ISM_Q_STEP_BORDER 5.0f #define ISM_Q_STEP_BORDER_FX ( 20971520 ) // Q22 +#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA +#define ISM_FEC_MAX 10 +#endif + #define ISM_RADIUS_NBITS 6 #define ISM_RADIUS_MIN 0.0f #define ISM_RADIUS_MIN_Q9 0 diff --git a/lib_com/options.h b/lib_com/options.h index a20bbcbc3..7acce3803 100755 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -186,6 +186,7 @@ #define NONBE_FIX_943_RECONFIG_IGF_AFTER_SETTING_BW /* FhG: issue 943: fix crash in BW switchin from WB in MDCT-Stereo core encoder */ #define FIX_911_REMOVE_CREND_DUPLICATION /* VA: issue 911: resolve duplication of CRend binaural external renderer function */ #define FIX_938_GCC_12_WARNINGS /* VA: issue #938: remove set_f(.,.,0) call in which length is always 0 to remove GCC 12.0 warning */ +#define NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA /* Nokia: issue 944: fix FEC error in OMASA */ /* #################### End BASOP porting switches ############################ */ diff --git a/lib_enc/ivas_ism_metadata_enc_fx.c b/lib_enc/ivas_ism_metadata_enc_fx.c index 8e6e0c93f..cd2f9e4f8 100644 --- a/lib_enc/ivas_ism_metadata_enc_fx.c +++ b/lib_enc/ivas_ism_metadata_enc_fx.c @@ -54,7 +54,9 @@ #define ISM_MAX_ELEVATION_DIFF_IDX ( ISM_ELEVATION_NBITS - 1 /*zero*/ - 1 /*sign*/ ) #define ISM_MAX_RADIUS_DIFF_IDX ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ ) +#ifndef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA #define ISM_FEC_MAX 10 +#endif #define ISM_MD_FEC_DIFF 10 #define ISM_MD_FEC_DIFF_Q22 41943040 #define ISM_MD_INC_DIFF_CNT_MAX 6 diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index d31e6d53d..88ac814de 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -45,6 +45,14 @@ #endif +#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA +/*------------------------------------------------------------------------- + * Local constants + *------------------------------------------------------------------------*/ + +#define OMASA_FEC_MAX 5 +#endif + /*------------------------------------------------------------------------- * Local function prototypes *------------------------------------------------------------------------*/ @@ -184,6 +192,10 @@ ivas_error ivas_omasa_enc_open_fx( hOMasa->prev_selected_object = 0; hOMasa->changing_object = 0; +#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA + hOMasa->since_obj_change_cnt = 0; + move16(); +#endif move16(); move16(); @@ -648,6 +660,27 @@ void ivas_omasa_enc_fx( move32(); move16(); } + +#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA + /* force absolute MD coding in case of change of separated object */ + IF ( NE_16( hOMasa->prev_selected_object, selected_object) ) + { + hOMasa->since_obj_change_cnt = 0; + hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + move16(); + move16(); + } + ELSE + { + hOMasa->since_obj_change_cnt = add(hOMasa->since_obj_change_cnt, 1); + hOMasa->since_obj_change_cnt = s_min( OMASA_FEC_MAX, hOMasa->since_obj_change_cnt ); + IF ( LT_16(hOMasa->since_obj_change_cnt, OMASA_FEC_MAX) ) + { + hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + move16(); + } + } +#endif hOMasa->prev_selected_object = selected_object; move16(); diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 918acc417..bba3c4b88 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -877,6 +877,9 @@ typedef struct ivas_omasa_enc_state_structure Word16 prev_selected_object; UWord8 changing_object; +#ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA + Word16 since_obj_change_cnt; +#endif } OMASA_ENC_STATE, *OMASA_ENC_HANDLE; -- GitLab From cb4cf0a8f91db3612b3fd1a109cc555ff77aa2eb Mon Sep 17 00:00:00 2001 From: Tapani Pihlajakuja Date: Tue, 15 Apr 2025 13:34:41 +0300 Subject: [PATCH 2/2] Apply clang format --- lib_enc/ivas_ism_metadata_enc_fx.c | 2 +- lib_enc/ivas_omasa_enc_fx.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_enc/ivas_ism_metadata_enc_fx.c b/lib_enc/ivas_ism_metadata_enc_fx.c index f43ddae48..589210cef 100644 --- a/lib_enc/ivas_ism_metadata_enc_fx.c +++ b/lib_enc/ivas_ism_metadata_enc_fx.c @@ -55,7 +55,7 @@ #define ISM_MAX_RADIUS_DIFF_IDX ( ISM_RADIUS_NBITS - 1 /*zero*/ - 1 /*sign*/ ) #ifndef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA -#define ISM_FEC_MAX 10 +#define ISM_FEC_MAX 10 #endif #define ISM_MD_FEC_DIFF 10 #define ISM_MD_FEC_DIFF_Q22 41943040 diff --git a/lib_enc/ivas_omasa_enc_fx.c b/lib_enc/ivas_omasa_enc_fx.c index 026501237..f3c461fa3 100644 --- a/lib_enc/ivas_omasa_enc_fx.c +++ b/lib_enc/ivas_omasa_enc_fx.c @@ -663,7 +663,7 @@ void ivas_omasa_enc_fx( #ifdef NONBE_FIX_944_FEC_OMASA_1SEP_OBJ_MASA /* force absolute MD coding in case of change of separated object */ - IF ( NE_16( hOMasa->prev_selected_object, selected_object) ) + IF( NE_16( hOMasa->prev_selected_object, selected_object ) ) { hOMasa->since_obj_change_cnt = 0; hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; @@ -672,9 +672,9 @@ void ivas_omasa_enc_fx( } ELSE { - hOMasa->since_obj_change_cnt = add(hOMasa->since_obj_change_cnt, 1); + hOMasa->since_obj_change_cnt = add( hOMasa->since_obj_change_cnt, 1 ); hOMasa->since_obj_change_cnt = s_min( OMASA_FEC_MAX, hOMasa->since_obj_change_cnt ); - IF ( LT_16(hOMasa->since_obj_change_cnt, OMASA_FEC_MAX) ) + IF( LT_16( hOMasa->since_obj_change_cnt, OMASA_FEC_MAX ) ) { hIsmMeta[0]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; move16(); -- GitLab