Loading lib_dec/ivas_dec.c +58 −33 Original line number Diff line number Diff line Loading @@ -451,7 +451,7 @@ ivas_error ivas_dec( } } /* MASA decoding */ /* MASA metadata decoding */ if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading @@ -462,7 +462,25 @@ ivas_error ivas_dec( st->bit_stream = &( st_ivas->bit_stream[( ism_total_brate / FRAMES_PER_SEC )] ); /* Audio signal decoding */ #ifdef OMASA_UPDATES /* set ISM parameters */ int16_t nchan_ism, nchan_transport_ism; nchan_ism = st_ivas->nchan_ism; nchan_transport_ism = st_ivas->nchan_ism; if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_ism = 1; nchan_transport_ism = 1; } else if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { nchan_ism = 0; nchan_transport_ism = 1; } #endif /* decode ISM metadata */ #ifndef OMASA_UPDATES #ifdef OMASA_UPDATES if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) #else Loading @@ -471,10 +489,7 @@ ivas_error ivas_dec( { if ( st_ivas->nSCE == 1 ) { if ( ( error = ivas_sce_dec( st_ivas, 0, &output[2], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) { return error; } ivas_sce_dec( st_ivas, 0, &output[2], output_frame, nb_bits_metadata[1] ); } else { Loading @@ -484,24 +499,19 @@ ivas_error ivas_dec( } } else { #ifdef OMASA_UPDATES int16_t nchan_ism = st_ivas->nchan_ism; if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_ism = 1; } #else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) #endif /* decode ISM format */ { /* decode ISM metadata */ #ifdef NCHAN_ISM_PARAMETER if ( ( error = ivas_ism_metadata_dec( ism_total_brate, #ifdef OMASA_UPDATES nchan_ism, nchan_ism, &nchan_transport_ism, #else st_ivas->nchan_ism, st_ivas->nchan_ism, &( st_ivas->nSCE ), #endif &( st_ivas->nSCE ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, st_ivas->hISMDTX, NULL ) ) != IVAS_ERR_OK ) st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, st_ivas->hISMDTX, NULL ) ) != IVAS_ERR_OK ) #else if ( ( error = ivas_ism_metadata_dec( ism_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, NULL, NULL ) ) != IVAS_ERR_OK ) #endif Loading @@ -509,19 +519,7 @@ ivas_error ivas_dec( return error; } for ( n = 0; n < st_ivas->nSCE - 1; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, 0 ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, sum_s( &nb_bits_metadata[1], st_ivas->nSCE ) ) ) != IVAS_ERR_OK ) { return error; } // VE: move the following updates into ivas_ism_metadata_dec() #ifdef OMASA_UPDATES if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { Loading @@ -531,7 +529,7 @@ ivas_error ivas_dec( st_ivas->hMasaIsmData->elevation_ism[n] = (int16_t) ( st_ivas->hIsmMetaData[n]->elevation + 0.5f ); } } else else /* ISM_MASA_MODE_MASA_ONE_OBJ */ { st_ivas->hMasaIsmData->azimuth_separated_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->azimuth + 0.5f ); st_ivas->hMasaIsmData->elevation_separated_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->elevation + 0.5f ); Loading @@ -543,8 +541,35 @@ ivas_error ivas_dec( st_ivas->hMasaIsmData->elevation_ism[n] = (int16_t) ( st_ivas->hIsmMetaData[n]->elevation + 0.5f ); } #endif #ifndef OMASA_UPDATES for ( n = 0; n < st_ivas->nSCE - 1; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, 0 ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, sum_s( &nb_bits_metadata[1], st_ivas->nSCE ) ) ) != IVAS_ERR_OK ) { return error; } #endif } #ifdef OMASA_UPDATES /* decode ISM channels */ for ( n = 0; n < nchan_transport_ism; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[st_ivas->nchan_transport + n], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) { return error; } } #endif /* decode MASA channels */ if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading Loading @@ -575,7 +600,7 @@ ivas_error ivas_dec( for ( n = 0; n < st_ivas->nchan_ism; n++ ) { mvr2r( output[n + 2], data_separated_objects[n], output_frame ); mvr2r( output[2 + n], data_separated_objects[n], output_frame ); v_multc( data_separated_objects[n], gain, data_separated_objects[n], output_frame ); } Loading lib_dec/ivas_init_dec.c +12 −3 Original line number Diff line number Diff line Loading @@ -1132,7 +1132,10 @@ ivas_error ivas_init_decoder( #ifdef MASA_AND_OBJECTS else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) { ivas_qmetadata_open( &( st_ivas->hQMetaData ) ); if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) { return error; } k = 0; ism_total_brate = 0; Loading @@ -1150,7 +1153,10 @@ ivas_error ivas_init_decoder( st_ivas->nSCE = 1; ism_total_brate = sep_object_brate[k - 2][0]; create_sce_dec( st_ivas, 0, ism_total_brate ); if ( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ) != IVAS_ERR_OK ) { return error; } reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] ); Loading Loading @@ -1221,7 +1227,10 @@ ivas_error ivas_init_decoder( if ( st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) { ivas_dirac_dec_open( st_ivas ); if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ) != IVAS_ERR_OK ) Loading lib_enc/ivas_ism_enc.c +14 −10 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ ivas_error ivas_ism_enc( #endif ivas_error error; #ifdef MASA_AND_OBJECTS int16_t i, nchan_transport; int16_t i, nchan_transport_ism; #endif push_wmops( "ivas_ism_enc" ); Loading Loading @@ -132,18 +132,18 @@ ivas_error ivas_ism_enc( set_s( md_diff_flag, 1, nchan_ism ); #ifdef MASA_AND_OBJECTS nchan_transport = st_ivas->nchan_transport; nchan_transport_ism = st_ivas->nchan_transport; #ifdef OMASA_UPDATES if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_transport = 1; nchan_transport_ism = 1; nchan_ism = 1; } else #endif if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { nchan_transport = st_ivas->hEncoderConfig->nchan_ism; nchan_transport_ism = st_ivas->hEncoderConfig->nchan_ism; } #endif Loading @@ -151,10 +151,10 @@ ivas_error ivas_ism_enc( * Preprocesing *-----------------------------------------------------------------*/ /* in ISM format: st_ivas->nchan_transport = st_ivas->nSCE */ #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else /* in ISM format: st_ivas->nchan_transport = st_ivas->nSCE */ for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif { Loading Loading @@ -303,7 +303,7 @@ ivas_error ivas_ism_enc( nchan_ism, #endif #ifdef MASA_AND_OBJECTS nchan_transport, nchan_transport_ism, #else st_ivas->nchan_transport, #endif Loading Loading @@ -352,7 +352,7 @@ ivas_error ivas_ism_enc( nchan_ism, #endif #ifdef MASA_AND_OBJECTS nchan_transport, nchan_transport_ism, #else st_ivas->nchan_transport, #endif Loading Loading @@ -411,7 +411,7 @@ ivas_error ivas_ism_enc( *-----------------------------------------------------------------*/ #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif Loading Loading @@ -471,7 +471,7 @@ ivas_error ivas_ism_enc( if ( dtx_flag ) { #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif Loading @@ -493,7 +493,11 @@ ivas_error ivas_ism_enc( int16_t id, n; n = 0; #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif { if ( sce_id != st_ivas->hISMDTX->sce_id_dtx ) { Loading Loading
lib_dec/ivas_dec.c +58 −33 Original line number Diff line number Diff line Loading @@ -451,7 +451,7 @@ ivas_error ivas_dec( } } /* MASA decoding */ /* MASA metadata decoding */ if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading @@ -462,7 +462,25 @@ ivas_error ivas_dec( st->bit_stream = &( st_ivas->bit_stream[( ism_total_brate / FRAMES_PER_SEC )] ); /* Audio signal decoding */ #ifdef OMASA_UPDATES /* set ISM parameters */ int16_t nchan_ism, nchan_transport_ism; nchan_ism = st_ivas->nchan_ism; nchan_transport_ism = st_ivas->nchan_ism; if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_ism = 1; nchan_transport_ism = 1; } else if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { nchan_ism = 0; nchan_transport_ism = 1; } #endif /* decode ISM metadata */ #ifndef OMASA_UPDATES #ifdef OMASA_UPDATES if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) #else Loading @@ -471,10 +489,7 @@ ivas_error ivas_dec( { if ( st_ivas->nSCE == 1 ) { if ( ( error = ivas_sce_dec( st_ivas, 0, &output[2], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) { return error; } ivas_sce_dec( st_ivas, 0, &output[2], output_frame, nb_bits_metadata[1] ); } else { Loading @@ -484,24 +499,19 @@ ivas_error ivas_dec( } } else { #ifdef OMASA_UPDATES int16_t nchan_ism = st_ivas->nchan_ism; if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_ism = 1; } #else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) #endif /* decode ISM format */ { /* decode ISM metadata */ #ifdef NCHAN_ISM_PARAMETER if ( ( error = ivas_ism_metadata_dec( ism_total_brate, #ifdef OMASA_UPDATES nchan_ism, nchan_ism, &nchan_transport_ism, #else st_ivas->nchan_ism, st_ivas->nchan_ism, &( st_ivas->nSCE ), #endif &( st_ivas->nSCE ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, st_ivas->hISMDTX, NULL ) ) != IVAS_ERR_OK ) st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, st_ivas->hISMDTX, NULL ) ) != IVAS_ERR_OK ) #else if ( ( error = ivas_ism_metadata_dec( ism_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, &nb_bits_metadata[1], st_ivas->ism_mode, NULL, NULL ) ) != IVAS_ERR_OK ) #endif Loading @@ -509,19 +519,7 @@ ivas_error ivas_dec( return error; } for ( n = 0; n < st_ivas->nSCE - 1; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, 0 ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, sum_s( &nb_bits_metadata[1], st_ivas->nSCE ) ) ) != IVAS_ERR_OK ) { return error; } // VE: move the following updates into ivas_ism_metadata_dec() #ifdef OMASA_UPDATES if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { Loading @@ -531,7 +529,7 @@ ivas_error ivas_dec( st_ivas->hMasaIsmData->elevation_ism[n] = (int16_t) ( st_ivas->hIsmMetaData[n]->elevation + 0.5f ); } } else else /* ISM_MASA_MODE_MASA_ONE_OBJ */ { st_ivas->hMasaIsmData->azimuth_separated_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->azimuth + 0.5f ); st_ivas->hMasaIsmData->elevation_separated_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->elevation + 0.5f ); Loading @@ -543,8 +541,35 @@ ivas_error ivas_dec( st_ivas->hMasaIsmData->elevation_ism[n] = (int16_t) ( st_ivas->hIsmMetaData[n]->elevation + 0.5f ); } #endif #ifndef OMASA_UPDATES for ( n = 0; n < st_ivas->nSCE - 1; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, 0 ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = ivas_sce_dec( st_ivas, n, &output[2 * st_ivas->nCPE + n], output_frame, sum_s( &nb_bits_metadata[1], st_ivas->nSCE ) ) ) != IVAS_ERR_OK ) { return error; } #endif } #ifdef OMASA_UPDATES /* decode ISM channels */ for ( n = 0; n < nchan_transport_ism; n++ ) { if ( ( error = ivas_sce_dec( st_ivas, n, &output[st_ivas->nchan_transport + n], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) { return error; } } #endif /* decode MASA channels */ if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) { return error; Loading Loading @@ -575,7 +600,7 @@ ivas_error ivas_dec( for ( n = 0; n < st_ivas->nchan_ism; n++ ) { mvr2r( output[n + 2], data_separated_objects[n], output_frame ); mvr2r( output[2 + n], data_separated_objects[n], output_frame ); v_multc( data_separated_objects[n], gain, data_separated_objects[n], output_frame ); } Loading
lib_dec/ivas_init_dec.c +12 −3 Original line number Diff line number Diff line Loading @@ -1132,7 +1132,10 @@ ivas_error ivas_init_decoder( #ifdef MASA_AND_OBJECTS else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) { ivas_qmetadata_open( &( st_ivas->hQMetaData ) ); if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) { return error; } k = 0; ism_total_brate = 0; Loading @@ -1150,7 +1153,10 @@ ivas_error ivas_init_decoder( st_ivas->nSCE = 1; ism_total_brate = sep_object_brate[k - 2][0]; create_sce_dec( st_ivas, 0, ism_total_brate ); if ( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ) != IVAS_ERR_OK ) { return error; } reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] ); Loading Loading @@ -1221,7 +1227,10 @@ ivas_error ivas_init_decoder( if ( st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_MONO_DOWNMIX ) { ivas_dirac_dec_open( st_ivas ); if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } if ( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ) != IVAS_ERR_OK ) Loading
lib_enc/ivas_ism_enc.c +14 −10 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ ivas_error ivas_ism_enc( #endif ivas_error error; #ifdef MASA_AND_OBJECTS int16_t i, nchan_transport; int16_t i, nchan_transport_ism; #endif push_wmops( "ivas_ism_enc" ); Loading Loading @@ -132,18 +132,18 @@ ivas_error ivas_ism_enc( set_s( md_diff_flag, 1, nchan_ism ); #ifdef MASA_AND_OBJECTS nchan_transport = st_ivas->nchan_transport; nchan_transport_ism = st_ivas->nchan_transport; #ifdef OMASA_UPDATES if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nchan_transport = 1; nchan_transport_ism = 1; nchan_ism = 1; } else #endif if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { nchan_transport = st_ivas->hEncoderConfig->nchan_ism; nchan_transport_ism = st_ivas->hEncoderConfig->nchan_ism; } #endif Loading @@ -151,10 +151,10 @@ ivas_error ivas_ism_enc( * Preprocesing *-----------------------------------------------------------------*/ /* in ISM format: st_ivas->nchan_transport = st_ivas->nSCE */ #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else /* in ISM format: st_ivas->nchan_transport = st_ivas->nSCE */ for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif { Loading Loading @@ -303,7 +303,7 @@ ivas_error ivas_ism_enc( nchan_ism, #endif #ifdef MASA_AND_OBJECTS nchan_transport, nchan_transport_ism, #else st_ivas->nchan_transport, #endif Loading Loading @@ -352,7 +352,7 @@ ivas_error ivas_ism_enc( nchan_ism, #endif #ifdef MASA_AND_OBJECTS nchan_transport, nchan_transport_ism, #else st_ivas->nchan_transport, #endif Loading Loading @@ -411,7 +411,7 @@ ivas_error ivas_ism_enc( *-----------------------------------------------------------------*/ #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif Loading Loading @@ -471,7 +471,7 @@ ivas_error ivas_ism_enc( if ( dtx_flag ) { #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport; sce_id++ ) for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif Loading @@ -493,7 +493,11 @@ ivas_error ivas_ism_enc( int16_t id, n; n = 0; #ifdef MASA_AND_OBJECTS for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) #else for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) #endif { if ( sce_id != st_ivas->hISMDTX->sce_id_dtx ) { Loading