Loading lib_com/ivas_stat_com.h +0 −15 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ /*----------------------------------------------------------------------------------* * Declaration of ISM common (encoder & decoder) structure *----------------------------------------------------------------------------------*/ #ifdef FIX_379_ANGLE typedef struct { int16_t last_angle1_idx; /* last frame index of coded azimuth/yaw */ Loading @@ -51,16 +50,6 @@ typedef struct int16_t last_angle2_idx; /* last frame index of coded elevation/pitch */ int16_t angle2_diff_cnt; /* FEC counter of consecutive differentially elevation/pitch coded frames */ } ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE; #else typedef struct { int16_t last_azimuth_idx; /* last frame index of coded azimuth */ int16_t azimuth_diff_cnt; /* FEC counter of consecutive differentially azimuth coded frames */ int16_t last_elevation_idx; /* last frame index of coded elevation */ int16_t elevation_diff_cnt; /* FEC counter of consecutive differentially elevation coded frames */ } ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE; #endif /* ISM metadata handle (storage for one frame of read ISM metadata) */ typedef struct { Loading @@ -72,12 +61,8 @@ typedef struct float radius; float yaw; /* azimuth orientation value read from the input metadata file */ float pitch; /* elevation orientation value read from the input metadata file */ #ifdef FIX_379_ANGLE ISM_METADATA_ANGLE position_angle; /* Angle structs for azimuth and elevation */ ISM_METADATA_ANGLE orientation_angle; /* Angle structs for yaw and pitch */ #else ISM_METADATA_ANGLE angle[2]; /* Angle structs for [0] azimuth/elevation and [1] yaw/pitch */ #endif int16_t last_radius_idx; /* last frame index of coded radius */ int16_t radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */ Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,6 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define FIX_379_ANGLE /* Eri: Extended metadata issues related to angle structure */ #define NOKIA_PARAMBIN_REQULARIZATION /* Nokia: Contribution - Configured reqularization factor for parametric binauralizer. */ #define NOKIA_ADAPTIVE_BINAURAL_PROTOS /* Nokia: Contribution 28: Adaptive binaural prototypes */ Loading lib_dec/ivas_ism_metadata_dec.c +0 −202 Original line number Diff line number Diff line Loading @@ -159,14 +159,9 @@ ivas_error ivas_ism_metadata_dec( float yaw, pitch, radius; int16_t flag_abs_radius; int16_t flag_abs_orientation; #ifdef FIX_379_ANGLE int16_t flag_abs_position; int16_t idx_angle1; int16_t idx_angle2; #else int16_t idx_azimuth, flag_abs_azimuth; int16_t idx_elevation; #endif int16_t next_bit_pos_orig; uint16_t i, bstr_meta[MAX_BITS_METADATA], *bstr_orig; ISM_METADATA_HANDLE hIsmMetaData; Loading Loading @@ -303,65 +298,34 @@ ivas_error ivas_ism_metadata_dec( { nb_bits_start = st0->next_bit_pos; } #ifdef FIX_379_ANGLE flag_abs_position = 0; #else flag_abs_azimuth = 0; #endif flag_abs_orientation = 0; flag_abs_radius = 0; if ( hIsmMeta[ch]->ism_metadata_flag ) { #ifdef FIX_379_ANGLE decode_angle_indices( st0, &( hIsmMetaData->position_angle ), &flag_abs_position ); idx_angle1 = hIsmMetaData->position_angle.last_angle1_idx; idx_angle2 = hIsmMetaData->position_angle.last_angle2_idx; #else decode_angle_indices( st0, &( hIsmMetaData->angle[0] ), &flag_abs_azimuth ); idx_azimuth = hIsmMetaData->angle[0].last_azimuth_idx; idx_elevation = hIsmMetaData->angle[0].last_elevation_idx; #endif /* Azimuth/Elevation dequantization */ if ( ism_mode == ISM_MODE_PARAM ) { #ifdef FIX_379_ANGLE hParamIsm->azi_index[ch] = idx_angle1; hParamIsm->ele_index[ch] = idx_angle2; #else hParamIsm->azi_index[ch] = idx_azimuth; hParamIsm->ele_index[ch] = idx_elevation; #endif } else /* ISM_MODE_DISC */ { #ifdef FIX_379_ANGLE hIsmMetaData->azimuth = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); hIsmMetaData->elevation = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #else hIsmMetaData->azimuth = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); hIsmMetaData->elevation = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #endif /* radius/raw/pitch dequantization */ if ( ism_extmeta_bitstream ) { #ifdef FIX_379_ANGLE decode_angle_indices( st0, &( hIsmMetaData->orientation_angle ), &flag_abs_orientation ); idx_angle1 = hIsmMetaData->orientation_angle.last_angle1_idx; idx_angle2 = hIsmMetaData->orientation_angle.last_angle2_idx; #else decode_angle_indices( st0, &( hIsmMetaData->angle[1] ), &flag_abs_orientation ); idx_azimuth = hIsmMetaData->angle[1].last_azimuth_idx; idx_elevation = hIsmMetaData->angle[1].last_elevation_idx; #endif #ifdef FIX_379_ANGLE yaw = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); pitch = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #else yaw = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); pitch = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #endif idx_radius = decode_radius( st0, &hIsmMetaData->last_radius_idx, &flag_abs_radius ); radius = usdequant( idx_radius, ISM_RADIUS_MIN, ISM_RADIUS_DELTA ); Loading Loading @@ -460,13 +424,8 @@ ivas_error ivas_ism_metadata_dec( { hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch]; hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch]; #ifdef FIX_379_ANGLE hIsmMeta[ch]->position_angle.last_angle1_idx = hParamIsm->azi_index[ch]; hIsmMeta[ch]->position_angle.last_angle2_idx = hParamIsm->ele_index[ch]; #else hIsmMeta[ch]->angle[0].last_azimuth_idx = hParamIsm->azi_index[ch]; hIsmMeta[ch]->angle[0].last_elevation_idx = hParamIsm->ele_index[ch]; #endif } } } Loading Loading @@ -576,17 +535,10 @@ ivas_error ivas_ism_metadata_dec_create( } st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0; #ifdef FIX_379_ANGLE st_ivas->hIsmMetaData[ch]->position_angle.last_angle1_idx = 0; st_ivas->hIsmMetaData[ch]->position_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle1_idx = 0; st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); #else st_ivas->hIsmMetaData[ch]->angle[0].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[0].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->angle[1].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[1].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); #endif st_ivas->hIsmMetaData[ch]->last_radius_idx = 8; /* Init to radius 1.0 */ st_ivas->hIsmMetaData[ch]->last_true_azimuth = 0; Loading @@ -611,7 +563,6 @@ ivas_error ivas_ism_metadata_dec_create( * * Decoding of an angle *-------------------------------------------------------------------------*/ #ifdef FIX_379_ANGLE static void decode_angle_indices( DEC_CORE_HANDLE st0, /* i/o: bitstream handle */ Loading Loading @@ -752,148 +703,6 @@ static void decode_angle_indices( return; } #else static void decode_angle_indices( DEC_CORE_HANDLE st0, /* i/o: bitstream handle */ ISM_METADATA_ANGLE_HANDLE angle, /* i/o: angle handle */ int16_t *flag_abs_azimuth /* o : Azimuth encoding mode */ ) { int16_t idx_azimuth, nbits_diff_azimuth, diff, sgn; int16_t idx_elevation, nbits_diff_elevation; /*----------------------------------------------------------------* * Azimuth decoding and dequantization *----------------------------------------------------------------*/ /* Decode azimuth index */ if ( get_next_indice( st0, 1 ) == 1 ) /* azimuth_abs_flag */ { idx_azimuth = get_next_indice( st0, ISM_AZIMUTH_NBITS ); *flag_abs_azimuth = 1; } else { diff = 0; sgn = 1; if ( get_next_indice( st0, 1 ) == 0 ) { nbits_diff_azimuth = 1; } else { nbits_diff_azimuth = 1; if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ { sgn = -1; } nbits_diff_azimuth++; /* read until the stop bit */ while ( ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) && ( get_next_indice( st0, 1 ) == 1 ) ) { diff++; nbits_diff_azimuth++; } if ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) { /* count stop bit */ nbits_diff_azimuth++; } } idx_azimuth = angle->last_azimuth_idx + sgn * diff; } /* azimuth is on a circle - check for diff coding for -180° -> 180° and vice versa changes */ if ( idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth -= ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* +180° -> -180° */ } else if ( idx_azimuth < 0 ) { idx_azimuth += ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* -180° -> +180° */ } /* +180° == -180° */ if ( idx_azimuth == ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth = 0; } /* sanity check in case of FER or BER */ if ( idx_azimuth < 0 || idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth = angle->last_azimuth_idx; } /*----------------------------------------------------------------* * Elevation decoding and dequantization *----------------------------------------------------------------*/ /* Decode elevation index */ if ( *flag_abs_azimuth == 0 && get_next_indice( st0, 1 ) == 1 ) /* elevation_abs_flag */ { idx_elevation = get_next_indice( st0, ISM_ELEVATION_NBITS ); } else { diff = 0; sgn = 1; if ( get_next_indice( st0, 1 ) == 0 ) { nbits_diff_elevation = 1; } else { nbits_diff_elevation = 1; if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ { sgn = -1; } nbits_diff_elevation++; /* read until the stop bit */ while ( ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) && ( get_next_indice( st0, 1 ) == 1 ) ) { diff++; nbits_diff_elevation++; } if ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) { /* count stop bit */ nbits_diff_elevation++; } } idx_elevation = angle->last_elevation_idx + sgn * diff; } /* sanity check in case of FER or BER */ if ( idx_elevation < 0 || idx_elevation > ( 1 << ISM_ELEVATION_NBITS ) - 1 ) { idx_elevation = angle->last_elevation_idx; } /*----------------------------------------------------------------* * Final updates *----------------------------------------------------------------*/ angle->last_azimuth_idx = idx_azimuth; angle->last_elevation_idx = idx_elevation; return; } #endif /*------------------------------------------------------------------------- Loading Loading @@ -1111,24 +920,13 @@ void ivas_ism_metadata_sid_dec( /* update last indexes to correspond to active frames coding */ if ( nBits_azimuth > ISM_AZIMUTH_NBITS ) { #ifdef FIX_379_ANGLE hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->position_angle.last_angle2_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); #else hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); #endif } else { #ifdef FIX_379_ANGLE hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->position_angle.last_angle2_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); #else hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); #endif } /* save for smoothing metadata evolution */ Loading lib_enc/ivas_ism_metadata_enc.c +0 −305 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
lib_com/ivas_stat_com.h +0 −15 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ /*----------------------------------------------------------------------------------* * Declaration of ISM common (encoder & decoder) structure *----------------------------------------------------------------------------------*/ #ifdef FIX_379_ANGLE typedef struct { int16_t last_angle1_idx; /* last frame index of coded azimuth/yaw */ Loading @@ -51,16 +50,6 @@ typedef struct int16_t last_angle2_idx; /* last frame index of coded elevation/pitch */ int16_t angle2_diff_cnt; /* FEC counter of consecutive differentially elevation/pitch coded frames */ } ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE; #else typedef struct { int16_t last_azimuth_idx; /* last frame index of coded azimuth */ int16_t azimuth_diff_cnt; /* FEC counter of consecutive differentially azimuth coded frames */ int16_t last_elevation_idx; /* last frame index of coded elevation */ int16_t elevation_diff_cnt; /* FEC counter of consecutive differentially elevation coded frames */ } ISM_METADATA_ANGLE, *ISM_METADATA_ANGLE_HANDLE; #endif /* ISM metadata handle (storage for one frame of read ISM metadata) */ typedef struct { Loading @@ -72,12 +61,8 @@ typedef struct float radius; float yaw; /* azimuth orientation value read from the input metadata file */ float pitch; /* elevation orientation value read from the input metadata file */ #ifdef FIX_379_ANGLE ISM_METADATA_ANGLE position_angle; /* Angle structs for azimuth and elevation */ ISM_METADATA_ANGLE orientation_angle; /* Angle structs for yaw and pitch */ #else ISM_METADATA_ANGLE angle[2]; /* Angle structs for [0] azimuth/elevation and [1] yaw/pitch */ #endif int16_t last_radius_idx; /* last frame index of coded radius */ int16_t radius_diff_cnt; /* FEC counter of consecutive differentially radius coded frames */ Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,6 @@ /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ #define FIX_379_ANGLE /* Eri: Extended metadata issues related to angle structure */ #define NOKIA_PARAMBIN_REQULARIZATION /* Nokia: Contribution - Configured reqularization factor for parametric binauralizer. */ #define NOKIA_ADAPTIVE_BINAURAL_PROTOS /* Nokia: Contribution 28: Adaptive binaural prototypes */ Loading
lib_dec/ivas_ism_metadata_dec.c +0 −202 Original line number Diff line number Diff line Loading @@ -159,14 +159,9 @@ ivas_error ivas_ism_metadata_dec( float yaw, pitch, radius; int16_t flag_abs_radius; int16_t flag_abs_orientation; #ifdef FIX_379_ANGLE int16_t flag_abs_position; int16_t idx_angle1; int16_t idx_angle2; #else int16_t idx_azimuth, flag_abs_azimuth; int16_t idx_elevation; #endif int16_t next_bit_pos_orig; uint16_t i, bstr_meta[MAX_BITS_METADATA], *bstr_orig; ISM_METADATA_HANDLE hIsmMetaData; Loading Loading @@ -303,65 +298,34 @@ ivas_error ivas_ism_metadata_dec( { nb_bits_start = st0->next_bit_pos; } #ifdef FIX_379_ANGLE flag_abs_position = 0; #else flag_abs_azimuth = 0; #endif flag_abs_orientation = 0; flag_abs_radius = 0; if ( hIsmMeta[ch]->ism_metadata_flag ) { #ifdef FIX_379_ANGLE decode_angle_indices( st0, &( hIsmMetaData->position_angle ), &flag_abs_position ); idx_angle1 = hIsmMetaData->position_angle.last_angle1_idx; idx_angle2 = hIsmMetaData->position_angle.last_angle2_idx; #else decode_angle_indices( st0, &( hIsmMetaData->angle[0] ), &flag_abs_azimuth ); idx_azimuth = hIsmMetaData->angle[0].last_azimuth_idx; idx_elevation = hIsmMetaData->angle[0].last_elevation_idx; #endif /* Azimuth/Elevation dequantization */ if ( ism_mode == ISM_MODE_PARAM ) { #ifdef FIX_379_ANGLE hParamIsm->azi_index[ch] = idx_angle1; hParamIsm->ele_index[ch] = idx_angle2; #else hParamIsm->azi_index[ch] = idx_azimuth; hParamIsm->ele_index[ch] = idx_elevation; #endif } else /* ISM_MODE_DISC */ { #ifdef FIX_379_ANGLE hIsmMetaData->azimuth = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); hIsmMetaData->elevation = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #else hIsmMetaData->azimuth = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); hIsmMetaData->elevation = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #endif /* radius/raw/pitch dequantization */ if ( ism_extmeta_bitstream ) { #ifdef FIX_379_ANGLE decode_angle_indices( st0, &( hIsmMetaData->orientation_angle ), &flag_abs_orientation ); idx_angle1 = hIsmMetaData->orientation_angle.last_angle1_idx; idx_angle2 = hIsmMetaData->orientation_angle.last_angle2_idx; #else decode_angle_indices( st0, &( hIsmMetaData->angle[1] ), &flag_abs_orientation ); idx_azimuth = hIsmMetaData->angle[1].last_azimuth_idx; idx_elevation = hIsmMetaData->angle[1].last_elevation_idx; #endif #ifdef FIX_379_ANGLE yaw = ism_dequant_meta( idx_angle1, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); pitch = ism_dequant_meta( idx_angle2, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #else yaw = ism_dequant_meta( idx_azimuth, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); pitch = ism_dequant_meta( idx_elevation, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); #endif idx_radius = decode_radius( st0, &hIsmMetaData->last_radius_idx, &flag_abs_radius ); radius = usdequant( idx_radius, ISM_RADIUS_MIN, ISM_RADIUS_DELTA ); Loading Loading @@ -460,13 +424,8 @@ ivas_error ivas_ism_metadata_dec( { hParamIsm->azi_index[ch] = hParamIsm->azi_index[ch] + hParamIsm->last_az_sgn[ch] * hParamIsm->last_az_diff[ch]; hParamIsm->ele_index[ch] = hParamIsm->ele_index[ch] + hParamIsm->last_el_sgn[ch] * hParamIsm->last_el_diff[ch]; #ifdef FIX_379_ANGLE hIsmMeta[ch]->position_angle.last_angle1_idx = hParamIsm->azi_index[ch]; hIsmMeta[ch]->position_angle.last_angle2_idx = hParamIsm->ele_index[ch]; #else hIsmMeta[ch]->angle[0].last_azimuth_idx = hParamIsm->azi_index[ch]; hIsmMeta[ch]->angle[0].last_elevation_idx = hParamIsm->ele_index[ch]; #endif } } } Loading Loading @@ -576,17 +535,10 @@ ivas_error ivas_ism_metadata_dec_create( } st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0; #ifdef FIX_379_ANGLE st_ivas->hIsmMetaData[ch]->position_angle.last_angle1_idx = 0; st_ivas->hIsmMetaData[ch]->position_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle1_idx = 0; st_ivas->hIsmMetaData[ch]->orientation_angle.last_angle2_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); #else st_ivas->hIsmMetaData[ch]->angle[0].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[0].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); st_ivas->hIsmMetaData[ch]->angle[1].last_azimuth_idx = 0; st_ivas->hIsmMetaData[ch]->angle[1].last_elevation_idx = 1 << ( ISM_ELEVATION_NBITS - 1 ); #endif st_ivas->hIsmMetaData[ch]->last_radius_idx = 8; /* Init to radius 1.0 */ st_ivas->hIsmMetaData[ch]->last_true_azimuth = 0; Loading @@ -611,7 +563,6 @@ ivas_error ivas_ism_metadata_dec_create( * * Decoding of an angle *-------------------------------------------------------------------------*/ #ifdef FIX_379_ANGLE static void decode_angle_indices( DEC_CORE_HANDLE st0, /* i/o: bitstream handle */ Loading Loading @@ -752,148 +703,6 @@ static void decode_angle_indices( return; } #else static void decode_angle_indices( DEC_CORE_HANDLE st0, /* i/o: bitstream handle */ ISM_METADATA_ANGLE_HANDLE angle, /* i/o: angle handle */ int16_t *flag_abs_azimuth /* o : Azimuth encoding mode */ ) { int16_t idx_azimuth, nbits_diff_azimuth, diff, sgn; int16_t idx_elevation, nbits_diff_elevation; /*----------------------------------------------------------------* * Azimuth decoding and dequantization *----------------------------------------------------------------*/ /* Decode azimuth index */ if ( get_next_indice( st0, 1 ) == 1 ) /* azimuth_abs_flag */ { idx_azimuth = get_next_indice( st0, ISM_AZIMUTH_NBITS ); *flag_abs_azimuth = 1; } else { diff = 0; sgn = 1; if ( get_next_indice( st0, 1 ) == 0 ) { nbits_diff_azimuth = 1; } else { nbits_diff_azimuth = 1; if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ { sgn = -1; } nbits_diff_azimuth++; /* read until the stop bit */ while ( ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) && ( get_next_indice( st0, 1 ) == 1 ) ) { diff++; nbits_diff_azimuth++; } if ( nbits_diff_azimuth < ISM_AZIMUTH_NBITS - 1 ) { /* count stop bit */ nbits_diff_azimuth++; } } idx_azimuth = angle->last_azimuth_idx + sgn * diff; } /* azimuth is on a circle - check for diff coding for -180° -> 180° and vice versa changes */ if ( idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth -= ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* +180° -> -180° */ } else if ( idx_azimuth < 0 ) { idx_azimuth += ( 1 << ISM_AZIMUTH_NBITS ) - 1; /* -180° -> +180° */ } /* +180° == -180° */ if ( idx_azimuth == ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth = 0; } /* sanity check in case of FER or BER */ if ( idx_azimuth < 0 || idx_azimuth > ( 1 << ISM_AZIMUTH_NBITS ) - 1 ) { idx_azimuth = angle->last_azimuth_idx; } /*----------------------------------------------------------------* * Elevation decoding and dequantization *----------------------------------------------------------------*/ /* Decode elevation index */ if ( *flag_abs_azimuth == 0 && get_next_indice( st0, 1 ) == 1 ) /* elevation_abs_flag */ { idx_elevation = get_next_indice( st0, ISM_ELEVATION_NBITS ); } else { diff = 0; sgn = 1; if ( get_next_indice( st0, 1 ) == 0 ) { nbits_diff_elevation = 1; } else { nbits_diff_elevation = 1; if ( get_next_indice( st0, 1 ) == 1 ) /* negative sign */ { sgn = -1; } nbits_diff_elevation++; /* read until the stop bit */ while ( ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) && ( get_next_indice( st0, 1 ) == 1 ) ) { diff++; nbits_diff_elevation++; } if ( nbits_diff_elevation < ISM_ELEVATION_NBITS ) { /* count stop bit */ nbits_diff_elevation++; } } idx_elevation = angle->last_elevation_idx + sgn * diff; } /* sanity check in case of FER or BER */ if ( idx_elevation < 0 || idx_elevation > ( 1 << ISM_ELEVATION_NBITS ) - 1 ) { idx_elevation = angle->last_elevation_idx; } /*----------------------------------------------------------------* * Final updates *----------------------------------------------------------------*/ angle->last_azimuth_idx = idx_azimuth; angle->last_elevation_idx = idx_elevation; return; } #endif /*------------------------------------------------------------------------- Loading Loading @@ -1111,24 +920,13 @@ void ivas_ism_metadata_sid_dec( /* update last indexes to correspond to active frames coding */ if ( nBits_azimuth > ISM_AZIMUTH_NBITS ) { #ifdef FIX_379_ANGLE hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->position_angle.last_angle2_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); #else hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth >> ( nBits_azimuth - ISM_AZIMUTH_NBITS ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation >> ( nBits_elevation - ISM_ELEVATION_NBITS ); #endif } else { #ifdef FIX_379_ANGLE hIsmMetaData->position_angle.last_angle1_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->position_angle.last_angle2_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); #else hIsmMetaData->angle[0].last_azimuth_idx = idx_azimuth << ( ISM_AZIMUTH_NBITS - nBits_azimuth ); hIsmMetaData->angle[0].last_elevation_idx = idx_elevation << ( ISM_ELEVATION_NBITS - nBits_elevation ); #endif } /* save for smoothing metadata evolution */ Loading
lib_enc/ivas_ism_metadata_enc.c +0 −305 File changed.Preview size limit exceeded, changes collapsed. Show changes