Commit 382d8853 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

Merge branch '1680_basop_port-object-editing-API' of...

Merge branch '1680_basop_port-object-editing-API' of ssh://forge.3gpp.org:29419/sa4/audio/ivas-basop into 1680_basop_port-object-editing-API
parents 38cb10d9 b5ada7a1
Loading
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -219,12 +219,19 @@ ivas_error ivas_td_binaural_renderer_sf_fx(
                FOR( nS = 0; nS < nchan_ism; nS++ )
                {
                    ismMetaData[nS].azimuth_fx = st_ivas->hIsmMetaData[nS]->edited_azimuth_fx;
                    move32();
                    ismMetaData[nS].elevation_fx = st_ivas->hIsmMetaData[nS]->edited_elevation_fx;
                    move32();
                    ismMetaData[nS].radius_fx = st_ivas->hIsmMetaData[nS]->edited_radius_fx;
                    move16();
                    ismMetaData[nS].yaw_fx = st_ivas->hIsmMetaData[nS]->edited_yaw_fx;
                    move32();
                    ismMetaData[nS].pitch_fx = st_ivas->hIsmMetaData[nS]->edited_pitch_fx;
                    move32();
                    ismMetaData[nS].non_diegetic_flag = st_ivas->hIsmMetaData[nS]->non_diegetic_flag;
                    move16();
                    ismMetaData[nS].gain_fx = st_ivas->hIsmMetaData[nS]->edited_gain_fx;
                    move32();
                    hIsmMetaData[nS] = &ismMetaData[nS];
                }

+2 −2
Original line number Diff line number Diff line
@@ -964,8 +964,8 @@ typedef struct ivas_masa_ism_data_structure
    Word16 elevation_ism_edited[MAX_NUM_OBJECTS];
    UWord8 ism_is_edited[MAX_NUM_OBJECTS];
#ifdef OBJ_EDITING_API
    float gain_ism[MAX_NUM_OBJECTS];
    float gain_masa;
    Word32 gain_ism[MAX_NUM_OBJECTS];
    Word32 gain_masa;
#endif

    Word16 idx_separated_ism;
+35 −4
Original line number Diff line number Diff line
@@ -648,6 +648,11 @@ ivas_error IVAS_DEC_Configure(

#ifdef OBJ_EDITING_API
    /* init flush buffer if necessary (only needed for binaural)*/
    test();
    test();
    test();
    test();
    test();
    if ( tsmEnabled && ( outputConfig == IVAS_AUDIO_CONFIG_BINAURAL || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_SPLIT_PCM || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_IR || outputConfig == IVAS_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) )
    {
        hIvasDec->flushbuffer = (void *) malloc( CPE_CHANNELS * hIvasDec->nSamplesFrame / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( Word16 ) );
@@ -2289,7 +2294,7 @@ ivas_error IVAS_DEC_GetObjectMetadata(

            metadata->yaw_fx = hIsmMeta->edited_yaw_fx;
            metadata->pitch_fx = hIsmMeta->edited_pitch_fx;
            metadata->spread = 0;
            metadata->spread_fx = 0;

            metadata->gainFactor_fx = hIsmMeta->edited_gain_fx;
            metadata->non_diegetic_flag = hIsmMeta->non_diegetic_flag;
@@ -3932,6 +3937,11 @@ ivas_error IVAS_DEC_GetEditableParameters(
{
    ivas_error error;

    test();
    test();
    test();
    test();
    test();
    if ( !( hIvasDec->st_ivas->ivas_format == ISM_FORMAT ||
            ( hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT && hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC ) ||
            ( hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT && ( hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || hIvasDec->st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) ) )
@@ -3939,45 +3949,66 @@ ivas_error IVAS_DEC_GetEditableParameters(
        return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Object editing no supported in this operation mode." );
    }

    test();
    test();
    if ( hIvasEditableParameters == NULL || hIvasDec == NULL || hIvasDec->st_ivas == NULL )
    {
        return IVAS_ERR_UNEXPECTED_NULL_POINTER;
    }

    hIvasEditableParameters->gain_bed_fx = ONE_IN_Q30;
    move32();
    hIvasEditableParameters->num_obj = hIvasDec->st_ivas->nchan_ism;
    move16();
    test();
    test();
    if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT )
    {
        if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_DISC || hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC )
        {
            int16_t obj;
            Word16 obj;
            for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ )
            {
                hIvasEditableParameters->ism_metadata[obj].azimuth_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->azimuth_fx;
                move32();
                hIvasEditableParameters->ism_metadata[obj].elevation_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->elevation_fx;
                move32();
                hIvasEditableParameters->ism_metadata[obj].yaw_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->yaw_fx;
                move32();
                hIvasEditableParameters->ism_metadata[obj].pitch_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->pitch_fx;
                move32();
                hIvasEditableParameters->ism_metadata[obj].radius_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->radius_fx;
                move16();
                hIvasEditableParameters->ism_metadata[obj].gain_fx = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain_fx;
                move32();
                hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag;
                move16();
            }
            if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC )
            {
                hIvasEditableParameters->gain_bed_fx = ONE_IN_Q30;
                move32();
            }
        }
        else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM )
        {
            int16_t obj;
            Word16 obj;
            for ( obj = 0; obj < hIvasEditableParameters->num_obj; obj++ )
            {
                hIvasEditableParameters->ism_metadata[obj].azimuth_fx = hIvasDec->st_ivas->hParamIsmDec->azimuth_values_fx[obj];
                move32();
                hIvasEditableParameters->ism_metadata[obj].elevation_fx = hIvasDec->st_ivas->hParamIsmDec->elevation_values_fx[obj];
                hIvasEditableParameters->ism_metadata[obj].yaw = 0.0f;
                move32();
                hIvasEditableParameters->ism_metadata[obj].yaw_fx = 0;
                move32();
                hIvasEditableParameters->ism_metadata[obj].pitch_fx = 0;
                move32();
                hIvasEditableParameters->ism_metadata[obj].radius_fx = 0;
                move16();
                hIvasEditableParameters->ism_metadata[obj].gain_fx = ONE_IN_Q31;
                move32();
                hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = 0;
                move16();
            }
        }
        else