Loading lib_com/ivas_ism_config.c +14 −2 Original line number Diff line number Diff line Loading @@ -141,13 +141,25 @@ ivas_error ivas_ism_config( for ( ch = 0; ch < n_ISms; ch++ ) { #ifndef ISM_NO_DIEGETIC_PAN #ifdef ISM_NO_DIEGETIC_PAN if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } else { if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) #endif { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } } #else if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } #endif } } /* split metadata bitbudget equally between channels */ Loading lib_dec/ivas_ism_metadata_dec.c +22 −14 Original line number Diff line number Diff line Loading @@ -196,13 +196,13 @@ ivas_error ivas_ism_metadata_dec( { #ifndef ISM_NO_DIEGETIC_PAN ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); #endif #ifdef ISM_NO_DIEGETIC_PAN localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); #endif if ( ism_imp[ch] > ISM_NO_META ) { #ifdef ISM_NO_DIEGETIC_PAN if ( ism_extended_metadata_flag ) { localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); /* read VAD flag */ if ( localVAD[ch] ) Loading @@ -213,11 +213,21 @@ ivas_error ivas_ism_metadata_dec( { hIsmMeta[ch]->ism_metadata_flag = 1; } localVAD[ch] = 1; } else { hIsmMeta[ch]->ism_metadata_flag = 1; } localVAD[ch] = 1; #else hIsmMeta[ch]->ism_metadata_flag = 1; #endif } else { #ifdef ISM_NO_DIEGETIC_PAN localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); #endif hIsmMeta[ch]->ism_metadata_flag = 0; } Loading @@ -226,9 +236,7 @@ ivas_error ivas_ism_metadata_dec( for ( ; ch < num_obj; ch++ ) { #ifndef ISM_NO_DIEGETIC_PAN hIsmMeta[ch]->ism_metadata_flag = 1; #endif ism_metadata_flag_global |= hIsmMeta[ch]->ism_metadata_flag; } Loading lib_enc/ivas_ism_metadata_enc.c +27 −13 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ ivas_error ivas_ism_metadata_enc( int16_t idx_elevation, idx_elevation_abs = 0, flag_abs_elevation[MAX_NUM_OBJECTS], nbits_diff_elevation; #endif #ifdef ISM_NO_DIEGETIC_PAN int16_t loc_ism_extended_metadata_flag = ism_extended_metadata_flag; int16_t idx_no_diegetic_pan_abs = 0, flag_abs_no_diegetic_pan[MAX_NUM_OBJECTS]; #endif float valQ; Loading Loading @@ -381,7 +382,14 @@ ivas_error ivas_ism_metadata_enc( if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { push_indice( hBstr, IND_ISM_EXTENDED_FLAG, ism_extended_metadata_flag, ISM_EXTENDED_METADATA_BITS ); loc_ism_extended_metadata_flag = ism_extended_metadata_flag; } #ifdef ISM_NO_DIEGETIC_PAN else { loc_ism_extended_metadata_flag = 0; } #endif #endif /* write ISm metadata flag (one per object) */ for ( ch = 0; ch < nchan_transport; ch++ ) Loading @@ -405,7 +413,11 @@ ivas_error ivas_ism_metadata_enc( push_indice( hBstr, IND_ISM_VAD_FLAG, localVAD[ch], ISM_METADATA_VAD_FLAG_BITS ); } #ifdef ISM_NO_DIEGETIC_PAN else if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) else { if ( loc_ism_extended_metadata_flag ) { if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) { /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */ push_indice( hBstr, IND_ISM_VAD_FLAG, 0, ISM_METADATA_VAD_FLAG_BITS ); Loading @@ -415,6 +427,8 @@ ivas_error ivas_ism_metadata_enc( /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */ push_indice( hBstr, IND_ISM_VAD_FLAG, 1, ISM_METADATA_VAD_FLAG_BITS ); } } } #endif } } Loading Loading @@ -444,7 +458,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef ISM_NO_DIEGETIC_PAN if ( hIsmMeta[ch]->ism_metadata_flag == 2 ) { if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag ) if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag ) { idx_no_diegetic_pan_abs = usquant( hIsmMetaData->no_diegetic_pan, &valQ, ISM_NO_DIEGETIC_PAN_MIN, ISM_NO_DIEGETIC_PAN_DELTA, 1 << ISM_NO_DIEGETIC_PAN_NBITS ); encode_no_diegetic_pan( hBstr, &hIsmMetaData->last_no_diegetic_pan_idx, &hIsmMetaData->no_diegetic_pan_diff_cnt, hIsmMetaData->last_ism_metadata_flag, idx_no_diegetic_pan_abs, &flag_abs_no_diegetic_pan[ch] ); Loading Loading @@ -477,7 +491,7 @@ ivas_error ivas_ism_metadata_enc( encode_angle_indices( hBstr, &( hIsmMetaData->angle[0] ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_azimuth_abs, idx_elevation_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] ); /* Encode orientation and radius, if above certain bit rate etc, discrete ISM */ if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag ) if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag ) { idx_azimuth_abs = ism_quant_meta( hIsmMetaData->yaw, &valQ, ism_azimuth_borders, 1 << ISM_AZIMUTH_NBITS ); idx_elevation_abs = ism_quant_meta( hIsmMetaData->pitch, &valQ, ism_elevation_borders, 1 << ISM_ELEVATION_NBITS ); Loading Loading
lib_com/ivas_ism_config.c +14 −2 Original line number Diff line number Diff line Loading @@ -141,13 +141,25 @@ ivas_error ivas_ism_config( for ( ch = 0; ch < n_ISms; ch++ ) { #ifndef ISM_NO_DIEGETIC_PAN #ifdef ISM_NO_DIEGETIC_PAN if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } else { if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) #endif { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } } #else if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) { nb_bits_metadata[0] += ISM_METADATA_VAD_FLAG_BITS; } #endif } } /* split metadata bitbudget equally between channels */ Loading
lib_dec/ivas_ism_metadata_dec.c +22 −14 Original line number Diff line number Diff line Loading @@ -196,13 +196,13 @@ ivas_error ivas_ism_metadata_dec( { #ifndef ISM_NO_DIEGETIC_PAN ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); #endif #ifdef ISM_NO_DIEGETIC_PAN localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); #endif if ( ism_imp[ch] > ISM_NO_META ) { #ifdef ISM_NO_DIEGETIC_PAN if ( ism_extended_metadata_flag ) { localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); /* read VAD flag */ if ( localVAD[ch] ) Loading @@ -213,11 +213,21 @@ ivas_error ivas_ism_metadata_dec( { hIsmMeta[ch]->ism_metadata_flag = 1; } localVAD[ch] = 1; } else { hIsmMeta[ch]->ism_metadata_flag = 1; } localVAD[ch] = 1; #else hIsmMeta[ch]->ism_metadata_flag = 1; #endif } else { #ifdef ISM_NO_DIEGETIC_PAN localVAD[ch] = get_next_indice( st0, ISM_METADATA_VAD_FLAG_BITS ); #endif hIsmMeta[ch]->ism_metadata_flag = 0; } Loading @@ -226,9 +236,7 @@ ivas_error ivas_ism_metadata_dec( for ( ; ch < num_obj; ch++ ) { #ifndef ISM_NO_DIEGETIC_PAN hIsmMeta[ch]->ism_metadata_flag = 1; #endif ism_metadata_flag_global |= hIsmMeta[ch]->ism_metadata_flag; } Loading
lib_enc/ivas_ism_metadata_enc.c +27 −13 Original line number Diff line number Diff line Loading @@ -224,6 +224,7 @@ ivas_error ivas_ism_metadata_enc( int16_t idx_elevation, idx_elevation_abs = 0, flag_abs_elevation[MAX_NUM_OBJECTS], nbits_diff_elevation; #endif #ifdef ISM_NO_DIEGETIC_PAN int16_t loc_ism_extended_metadata_flag = ism_extended_metadata_flag; int16_t idx_no_diegetic_pan_abs = 0, flag_abs_no_diegetic_pan[MAX_NUM_OBJECTS]; #endif float valQ; Loading Loading @@ -381,7 +382,14 @@ ivas_error ivas_ism_metadata_enc( if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { push_indice( hBstr, IND_ISM_EXTENDED_FLAG, ism_extended_metadata_flag, ISM_EXTENDED_METADATA_BITS ); loc_ism_extended_metadata_flag = ism_extended_metadata_flag; } #ifdef ISM_NO_DIEGETIC_PAN else { loc_ism_extended_metadata_flag = 0; } #endif #endif /* write ISm metadata flag (one per object) */ for ( ch = 0; ch < nchan_transport; ch++ ) Loading @@ -405,7 +413,11 @@ ivas_error ivas_ism_metadata_enc( push_indice( hBstr, IND_ISM_VAD_FLAG, localVAD[ch], ISM_METADATA_VAD_FLAG_BITS ); } #ifdef ISM_NO_DIEGETIC_PAN else if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) else { if ( loc_ism_extended_metadata_flag ) { if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) { /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */ push_indice( hBstr, IND_ISM_VAD_FLAG, 0, ISM_METADATA_VAD_FLAG_BITS ); Loading @@ -415,6 +427,8 @@ ivas_error ivas_ism_metadata_enc( /* this flag distinguishes between coding of inactive frame and active frame w/o. metadata */ push_indice( hBstr, IND_ISM_VAD_FLAG, 1, ISM_METADATA_VAD_FLAG_BITS ); } } } #endif } } Loading Loading @@ -444,7 +458,7 @@ ivas_error ivas_ism_metadata_enc( #ifdef ISM_NO_DIEGETIC_PAN if ( hIsmMeta[ch]->ism_metadata_flag == 2 ) { if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag ) if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag ) { idx_no_diegetic_pan_abs = usquant( hIsmMetaData->no_diegetic_pan, &valQ, ISM_NO_DIEGETIC_PAN_MIN, ISM_NO_DIEGETIC_PAN_DELTA, 1 << ISM_NO_DIEGETIC_PAN_NBITS ); encode_no_diegetic_pan( hBstr, &hIsmMetaData->last_no_diegetic_pan_idx, &hIsmMetaData->no_diegetic_pan_diff_cnt, hIsmMetaData->last_ism_metadata_flag, idx_no_diegetic_pan_abs, &flag_abs_no_diegetic_pan[ch] ); Loading Loading @@ -477,7 +491,7 @@ ivas_error ivas_ism_metadata_enc( encode_angle_indices( hBstr, &( hIsmMetaData->angle[0] ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_azimuth_abs, idx_elevation_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] ); /* Encode orientation and radius, if above certain bit rate etc, discrete ISM */ if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag ) if ( ism_mode == ISM_MODE_DISC && loc_ism_extended_metadata_flag ) { idx_azimuth_abs = ism_quant_meta( hIsmMetaData->yaw, &valQ, ism_azimuth_borders, 1 << ISM_AZIMUTH_NBITS ); idx_elevation_abs = ism_quant_meta( hIsmMetaData->pitch, &valQ, ism_elevation_borders, 1 << ISM_ELEVATION_NBITS ); Loading