Commit e6378fbe authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

edit object directions rather than band-wise DOAs in ParamISM

parent 97b8022d
Loading
Loading
Loading
Loading
+41 −18
Original line number Diff line number Diff line
@@ -1384,44 +1384,32 @@ void ivas_param_ism_dec_render(
    return;
}


#ifdef OBJ_EDITING_PARAMISM
/*-------------------------------------------------------------------------*
 * ivas_param_ism_params_to_masa_param_mapping()
 *
 *
 *-------------------------------------------------------------------------*/

void ivas_param_ism_params_to_masa_param_mapping(
void ivas_param_ism_obj2band(
    Decoder_Struct *st_ivas /* i/o: IVAS decoder structure      */
)
{
    PARAM_ISM_DEC_HANDLE hParamIsmDec;
    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;

    int16_t nBins;
    int16_t band_idx, bin_idx, sf_idx;
    int16_t brange[2];
    int16_t azimuth[2];
    int16_t elevation[2];
    float power_ratio[2];
    int32_t ivas_total_brate;

    PARAM_ISM_DEC_HANDLE hParamIsmDec;
    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;

    hParamIsmDec = st_ivas->hParamIsmDec;
    hSpatParamRendCom = st_ivas->hSpatParamRendCom;
    nBins = hSpatParamRendCom->num_freq_bands;

    ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;

    if ( !( ivas_total_brate == IVAS_SID_5k2 || ivas_total_brate == FRAME_NO_DATA ) )
    {
        ivas_param_ism_dec_dequant_DOA( hParamIsmDec, st_ivas->nchan_ism );
        ivas_param_ism_dec_dequant_powrat( hParamIsmDec );
        st_ivas->hISMDTX.dtx_flag = 0;
    }
    else
    {
        st_ivas->hISMDTX.dtx_flag = 1;
    }

    if ( st_ivas->hISMDTX.dtx_flag )
    {
        float energy_ratio;
@@ -1485,6 +1473,41 @@ void ivas_param_ism_params_to_masa_param_mapping(
            }
        }
    }
}
#endif

/*-------------------------------------------------------------------------*
 * ivas_param_ism_params_to_masa_param_mapping()
 *
 *
 *-------------------------------------------------------------------------*/

void ivas_param_ism_params_to_masa_param_mapping(
    Decoder_Struct *st_ivas /* i/o: IVAS decoder structure      */
)
{
    PARAM_ISM_DEC_HANDLE hParamIsmDec;
    SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom;
    int32_t ivas_total_brate;

    hParamIsmDec = st_ivas->hParamIsmDec;

    ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate;

    if ( !( ivas_total_brate == IVAS_SID_5k2 || ivas_total_brate == FRAME_NO_DATA ) )
    {
        ivas_param_ism_dec_dequant_DOA( hParamIsmDec, st_ivas->nchan_ism );
        ivas_param_ism_dec_dequant_powrat( hParamIsmDec );
        st_ivas->hISMDTX.dtx_flag = 0;
    }
    else
    {
        st_ivas->hISMDTX.dtx_flag = 1;
    }

#ifdef OBJ_EDITING_PARAMISM
    ivas_param_ism_obj2band( st_ivas );
#endif

    return;
}
+27 −27
Original line number Diff line number Diff line
@@ -1028,9 +1028,11 @@ void ivas_jbm_dec_prepare_renderer(
    else if ( st_ivas->ivas_format == ISM_FORMAT )
    {
        /* Rendering */
#ifndef OBJ_EDITING_PARAMISM
        if ( st_ivas->ism_mode == ISM_MODE_PARAM )
        {
#ifdef OBJ_EDITING_PARAMISM

#else
            if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC )
            {
                ivas_dirac_dec_set_md_map( st_ivas, n_render_timeslots );
@@ -1041,11 +1043,9 @@ void ivas_jbm_dec_prepare_renderer(
            {
                ivas_param_ism_dec_prepare_renderer( st_ivas, n_render_timeslots );
            }
#endif
        }
        else /* ISM_MODE_DISC */
#else
        if ( st_ivas->ism_mode != ISM_MODE_PARAM )
#endif
        {
            ivas_ism_dec_digest_tc( st_ivas );
        }
+20 −33
Original line number Diff line number Diff line
@@ -1092,8 +1092,8 @@ ivas_error IVAS_DEC_GetEditableParameters(
            int16_t obj;
            for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ )
            {
                hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hSpatParamRendCom->azimuth[0][0];
                hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hSpatParamRendCom->azimuth[0][0];
                hIvasEditableParameters->ism_metadata[obj].azimuth = hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj];
                hIvasEditableParameters->ism_metadata[obj].elevation = hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj];
                hIvasEditableParameters->ism_metadata[obj].yaw = 0;
                hIvasEditableParameters->ism_metadata[obj].pitch = 0;
                hIvasEditableParameters->ism_metadata[obj].radius = 0;
@@ -1163,24 +1163,11 @@ ivas_error IVAS_DEC_SetEditableParameters(
#ifdef OBJ_EDITING_PARAMISM
        else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM )
        {
            int16_t obj, band_idx, sf_idx, bin_idx;
            int16_t brange[2];
            int16_t obj;
            for ( obj = 0; obj < hIvasEditableParameters.num_obj; obj++ )
            {
                for ( band_idx = 0; band_idx < hIvasDec->st_ivas->hParamIsmDec->hParamIsm->nbands; band_idx++ )
                {
                    brange[0] = hIvasDec->st_ivas->hParamIsmDec->hParamIsm->band_grouping[band_idx];
                    brange[1] = hIvasDec->st_ivas->hParamIsmDec->hParamIsm->band_grouping[band_idx + 1];

                    for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ )
                    {
                        for ( bin_idx = brange[0]; bin_idx < brange[1]; bin_idx++ )
                        {
                            hIvasDec->st_ivas->hSpatParamRendCom->azimuth[sf_idx][bin_idx] = ( int16_t ) hIvasEditableParameters.ism_metadata[obj].azimuth;
                            hIvasDec->st_ivas->hSpatParamRendCom->elevation[sf_idx][bin_idx] = ( int16_t ) hIvasEditableParameters.ism_metadata[obj].elevation;
                        }
                    }
                }
                hIvasDec->st_ivas->hParamIsmDec->azimuth_values[obj] = hIvasEditableParameters.ism_metadata[obj].azimuth;
                hIvasDec->st_ivas->hParamIsmDec->elevation_values[obj] = hIvasEditableParameters.ism_metadata[obj].elevation;
            }
        }
        else