Loading lib_com/ivas_cnst.h +4 −3 Original line number Diff line number Diff line Loading @@ -1326,10 +1326,11 @@ enum #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 #define OMASA_TDREND_MATCHING_GAIN_FX 26026 //TODO: insert proper Q representations #ifdef OMASA_OBJECT_EDITING #define OMASA_GAIN_EDIT_THR 0.06f /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR 1.0f /* OMASA-DISC azimuth change threshold */ #define OMASA_ELE_EDIT_THR 2.0f /* OMASA-DISC elevation change threshold */ #define OMASA_GAIN_EDIT_THR_FX 0 /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR_FX 1 /* OMASA-DISC azimuth change threshold */ #define OMASA_ELE_EDIT_THR_FX 2 /* OMASA-DISC elevation change threshold */ #endif #define MASA_INV_ANGLE_AT_EQUATOR_DEG_Q30 (1453366656l) Loading lib_com/ivas_prot_fx.h +2 −1 Original line number Diff line number Diff line Loading @@ -3947,7 +3947,8 @@ void ivas_omasa_preProcessStereoTransportsForMovedObjects_fx( Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*cldfb_buf_q*/ Word16 *cldfb_buf_q, const Word16 nBins, const Word16 subframe ); const Word16 subframe ); void ivas_omasa_decode_masa_to_total_fx( Loading lib_dec/ivas_stat_dec.h +3 −3 Original line number Diff line number Diff line Loading @@ -968,14 +968,14 @@ typedef struct ivas_masa_ism_data_structure UWord8 ism_is_edited[MAX_NUM_OBJECTS]; #endif #ifdef OBJ_EDITING_API Word32 gain_ism[MAX_NUM_OBJECTS]; Word32 gain_ism_fx[MAX_NUM_OBJECTS]; Word32 gain_masa; #endif #ifdef OMASA_OBJECT_EDITING Word32 gain_ism_edited[MAX_NUM_OBJECTS]; Word32 gain_ism_edited_fx[MAX_NUM_OBJECTS]; UWord8 ism_gain_is_edited[MAX_NUM_OBJECTS]; UWord32 gain_masa_edited; UWord32 gain_masa_edited_fx; UWord8 masa_gain_is_edited; #endif Word16 idx_separated_ism; Loading lib_dec/lib_dec_fx.c +17 −14 Original line number Diff line number Diff line Loading @@ -4166,11 +4166,11 @@ ivas_error IVAS_DEC_SetEditableParameters( #ifdef OBJ_EDITING_PARAMISM_BIN hIvasDec->st_ivas->hParamIsmDec->edited_azimuth_values_fx[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth; hIvasDec->st_ivas->hParamIsmDec->edited_elevation_values_fx[obj] = hIvasEditableParameters.ism_metadata[obj].elevation; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited_fx[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; /* Detect direction editing in Param-ISM mode */ IF ( fabsf( hIvasDec->st_ivas->hParamIsmDec->azimuth_values_fx[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || fabsf( hIvasDec->st_ivas->hParamIsmDec->elevation_values_fx[obj] - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) IF ( GT_16( L_abs( L_sub( hIvasDec->st_ivas->hParamIsmDec->azimuth_values_fx[obj], hIvasEditableParameters.ism_metadata[obj].azimuth ) ), OMASA_AZI_EDIT_THR_FX ) || GT_16( L_abs( L_sub( hIvasDec->st_ivas->hParamIsmDec->elevation_values_fx[obj], hIvasEditableParameters.ism_metadata[obj].elevation ) ), OMASA_ELE_EDIT_THR_FX ) ) { hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1; } Loading @@ -4180,7 +4180,7 @@ ivas_error IVAS_DEC_SetEditableParameters( } /* Detect gain editing in Param-ISM mode */ IF ( fabsf( 1.0f - hIvasEditableParameters.ism_metadata[obj].gain_fx ) > OMASA_GAIN_EDIT_THR ) IF (GT_32( L_abs( L_sub( ONE_IN_Q30, hIvasEditableParameters.ism_metadata[obj].gain_fx ) ), OMASA_GAIN_EDIT_THR_FX ) ) // TODO: check Q values { hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1; } Loading Loading @@ -4249,12 +4249,15 @@ ivas_error IVAS_DEC_SetEditableParameters( * which in turn depends from the object priority and importance: * importance -> priority -> number of bits -> elevation resolution -> elevation ring index -> azimuth resolution. * leading to elevation_resolution -> elevation threshold and azimuth resolution -> azimuth threshold */ id_th = (int) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); //id_th = ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); assert(0 && "Insert proper basop code here!"); threshold_azi = 360.0f / (float) no_phi_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; threshold_ele = delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; threshold_ele = delta_theta_masa_fx[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; IF ( ( (float) abs( new_azi - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx] ) > threshold_azi ) || ( (float) abs( new_ele - hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) > threshold_ele ) ) test(); IF ( ( GT_32( L_abs( L_sub(new_azi, hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]) ), threshold_azi ) ) || ( GT_32( L_abs( L_sub(new_ele, hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]) ), threshold_ele ) ) ) { /* at least one of the threshold is exceeded, so use new direction value and set editing detection flag */ hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; Loading @@ -4270,8 +4273,8 @@ ivas_error IVAS_DEC_SetEditableParameters( ELSE { /* detect editing in ISM_MASA_MODE_DISC. optionally, add quantization-resolution -based thresholds */ IF ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth_fx - hIvasEditableParameters.ism_metadata[obj].azimuth_fx ) > OMASA_AZI_EDIT_THR || fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation_fx - hIvasEditableParameters.ism_metadata[obj].elevation_fx ) > OMASA_ELE_EDIT_THR ) IF ( GT_32( L_abs( L_sub( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth_fx, hIvasEditableParameters.ism_metadata[obj].azimuth_fx ) ), OMASA_AZI_EDIT_THR_FX ) || GT_32( L_abs( L_sub( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation_fx, hIvasEditableParameters.ism_metadata[obj].elevation_fx ) ), OMASA_ELE_EDIT_THR_FX ) ) { hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; Loading @@ -4285,10 +4288,10 @@ ivas_error IVAS_DEC_SetEditableParameters( } /* compare pre-edit gain and the edited one to detect editing */ IF ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) IF ( L_abs( L_sub(hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain_fx, hIvasEditableParameters.ism_metadata[obj].gain_fx ) ) > OMASA_GAIN_EDIT_THR_FX ) { hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited_fx[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; } ELSE { Loading @@ -4309,9 +4312,9 @@ ivas_error IVAS_DEC_SetEditableParameters( } } IF ( L_abs( sub(hIvasEditableParameters.gain_bed_fx, ONE_IN_Q30) ) > OMASA_GAIN_EDIT_THR ) //TODO: check Q value IF ( GE_32( L_abs( L_sub(hIvasEditableParameters.gain_bed_fx, ONE_IN_Q30) ), OMASA_GAIN_EDIT_THR_FX ) ) //TODO: check Q value { hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed_fx; //TODO: check type hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited_fx = hIvasEditableParameters.gain_bed_fx; //TODO: check type move32(); hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 1u; } Loading lib_rend/ivas_dirac_dec_binaural_functions_fx.c +134 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
lib_com/ivas_cnst.h +4 −3 Original line number Diff line number Diff line Loading @@ -1326,10 +1326,11 @@ enum #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 #define OMASA_TDREND_MATCHING_GAIN_FX 26026 //TODO: insert proper Q representations #ifdef OMASA_OBJECT_EDITING #define OMASA_GAIN_EDIT_THR 0.06f /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR 1.0f /* OMASA-DISC azimuth change threshold */ #define OMASA_ELE_EDIT_THR 2.0f /* OMASA-DISC elevation change threshold */ #define OMASA_GAIN_EDIT_THR_FX 0 /* OMASA gain change threshold */ #define OMASA_AZI_EDIT_THR_FX 1 /* OMASA-DISC azimuth change threshold */ #define OMASA_ELE_EDIT_THR_FX 2 /* OMASA-DISC elevation change threshold */ #endif #define MASA_INV_ANGLE_AT_EQUATOR_DEG_Q30 (1453366656l) Loading
lib_com/ivas_prot_fx.h +2 −1 Original line number Diff line number Diff line Loading @@ -3947,7 +3947,8 @@ void ivas_omasa_preProcessStereoTransportsForMovedObjects_fx( Word32 inIm_fx[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /*cldfb_buf_q*/ Word16 *cldfb_buf_q, const Word16 nBins, const Word16 subframe ); const Word16 subframe ); void ivas_omasa_decode_masa_to_total_fx( Loading
lib_dec/ivas_stat_dec.h +3 −3 Original line number Diff line number Diff line Loading @@ -968,14 +968,14 @@ typedef struct ivas_masa_ism_data_structure UWord8 ism_is_edited[MAX_NUM_OBJECTS]; #endif #ifdef OBJ_EDITING_API Word32 gain_ism[MAX_NUM_OBJECTS]; Word32 gain_ism_fx[MAX_NUM_OBJECTS]; Word32 gain_masa; #endif #ifdef OMASA_OBJECT_EDITING Word32 gain_ism_edited[MAX_NUM_OBJECTS]; Word32 gain_ism_edited_fx[MAX_NUM_OBJECTS]; UWord8 ism_gain_is_edited[MAX_NUM_OBJECTS]; UWord32 gain_masa_edited; UWord32 gain_masa_edited_fx; UWord8 masa_gain_is_edited; #endif Word16 idx_separated_ism; Loading
lib_dec/lib_dec_fx.c +17 −14 Original line number Diff line number Diff line Loading @@ -4166,11 +4166,11 @@ ivas_error IVAS_DEC_SetEditableParameters( #ifdef OBJ_EDITING_PARAMISM_BIN hIvasDec->st_ivas->hParamIsmDec->edited_azimuth_values_fx[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth; hIvasDec->st_ivas->hParamIsmDec->edited_elevation_values_fx[obj] = hIvasEditableParameters.ism_metadata[obj].elevation; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited_fx[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; /* Detect direction editing in Param-ISM mode */ IF ( fabsf( hIvasDec->st_ivas->hParamIsmDec->azimuth_values_fx[obj] - hIvasEditableParameters.ism_metadata[obj].azimuth ) > OMASA_AZI_EDIT_THR || fabsf( hIvasDec->st_ivas->hParamIsmDec->elevation_values_fx[obj] - hIvasEditableParameters.ism_metadata[obj].elevation ) > OMASA_ELE_EDIT_THR ) IF ( GT_16( L_abs( L_sub( hIvasDec->st_ivas->hParamIsmDec->azimuth_values_fx[obj], hIvasEditableParameters.ism_metadata[obj].azimuth ) ), OMASA_AZI_EDIT_THR_FX ) || GT_16( L_abs( L_sub( hIvasDec->st_ivas->hParamIsmDec->elevation_values_fx[obj], hIvasEditableParameters.ism_metadata[obj].elevation ) ), OMASA_ELE_EDIT_THR_FX ) ) { hIvasDec->st_ivas->hMasaIsmData->ism_dir_is_edited[obj] = 1; } Loading @@ -4180,7 +4180,7 @@ ivas_error IVAS_DEC_SetEditableParameters( } /* Detect gain editing in Param-ISM mode */ IF ( fabsf( 1.0f - hIvasEditableParameters.ism_metadata[obj].gain_fx ) > OMASA_GAIN_EDIT_THR ) IF (GT_32( L_abs( L_sub( ONE_IN_Q30, hIvasEditableParameters.ism_metadata[obj].gain_fx ) ), OMASA_GAIN_EDIT_THR_FX ) ) // TODO: check Q values { hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1; } Loading Loading @@ -4249,12 +4249,15 @@ ivas_error IVAS_DEC_SetEditableParameters( * which in turn depends from the object priority and importance: * importance -> priority -> number of bits -> elevation resolution -> elevation ring index -> azimuth resolution. * leading to elevation_resolution -> elevation threshold and azimuth resolution -> azimuth threshold */ id_th = (int) ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); //id_th = ( fabsf( (float) hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) / delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3] + 0.5f ); assert(0 && "Insert proper basop code here!"); threshold_azi = 360.0f / (float) no_phi_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 1][id_th]; threshold_ele = delta_theta_masa[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; threshold_ele = delta_theta_masa_fx[hIvasDec->st_ivas->hMasaIsmData->bits_ism[obj] - 3]; IF ( ( (float) abs( new_azi - hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx] ) > threshold_azi ) || ( (float) abs( new_ele - hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx] ) > threshold_ele ) ) test(); IF ( ( GT_32( L_abs( L_sub(new_azi, hIvasDec->st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]) ), threshold_azi ) ) || ( GT_32( L_abs( L_sub(new_ele, hIvasDec->st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]) ), threshold_ele ) ) ) { /* at least one of the threshold is exceeded, so use new direction value and set editing detection flag */ hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; Loading @@ -4270,8 +4273,8 @@ ivas_error IVAS_DEC_SetEditableParameters( ELSE { /* detect editing in ISM_MASA_MODE_DISC. optionally, add quantization-resolution -based thresholds */ IF ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth_fx - hIvasEditableParameters.ism_metadata[obj].azimuth_fx ) > OMASA_AZI_EDIT_THR || fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation_fx - hIvasEditableParameters.ism_metadata[obj].elevation_fx ) > OMASA_ELE_EDIT_THR ) IF ( GT_32( L_abs( L_sub( hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth_fx, hIvasEditableParameters.ism_metadata[obj].azimuth_fx ) ), OMASA_AZI_EDIT_THR_FX ) || GT_32( L_abs( L_sub( hIvasDec->st_ivas->hIsmMetaData[obj]->elevation_fx, hIvasEditableParameters.ism_metadata[obj].elevation_fx ) ), OMASA_ELE_EDIT_THR_FX ) ) { hIvasDec->st_ivas->hMasaIsmData->azimuth_ism_edited[obj] = new_azi; hIvasDec->st_ivas->hMasaIsmData->elevation_ism_edited[obj] = new_ele; Loading @@ -4285,10 +4288,10 @@ ivas_error IVAS_DEC_SetEditableParameters( } /* compare pre-edit gain and the edited one to detect editing */ IF ( fabsf( hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain - hIvasEditableParameters.ism_metadata[obj].gain ) > OMASA_GAIN_EDIT_THR ) IF ( L_abs( L_sub(hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain_fx, hIvasEditableParameters.ism_metadata[obj].gain_fx ) ) > OMASA_GAIN_EDIT_THR_FX ) { hIvasDec->st_ivas->hMasaIsmData->ism_gain_is_edited[obj] = 1u; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited[obj] = hIvasEditableParameters.ism_metadata[obj].gain; hIvasDec->st_ivas->hMasaIsmData->gain_ism_edited_fx[obj] = hIvasEditableParameters.ism_metadata[obj].gain_fx; } ELSE { Loading @@ -4309,9 +4312,9 @@ ivas_error IVAS_DEC_SetEditableParameters( } } IF ( L_abs( sub(hIvasEditableParameters.gain_bed_fx, ONE_IN_Q30) ) > OMASA_GAIN_EDIT_THR ) //TODO: check Q value IF ( GE_32( L_abs( L_sub(hIvasEditableParameters.gain_bed_fx, ONE_IN_Q30) ), OMASA_GAIN_EDIT_THR_FX ) ) //TODO: check Q value { hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited = hIvasEditableParameters.gain_bed_fx; //TODO: check type hIvasDec->st_ivas->hMasaIsmData->gain_masa_edited_fx = hIvasEditableParameters.gain_bed_fx; //TODO: check type move32(); hIvasDec->st_ivas->hMasaIsmData->masa_gain_is_edited = 1u; } Loading
lib_rend/ivas_dirac_dec_binaural_functions_fx.c +134 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes