Commit 0a6b2a5e authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

implement manipulation of the gain of the SBA signal in discrete-OSBA decoding

parent aca1c503
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@ typedef struct _IVAS_EDITABLE_PARAMETERS
{
    int16_t num_obj;
    IVAS_ISM_METADATA ism_metadata[IVAS_MAX_NUM_OBJECTS];
    float gain_bed;
} IVAS_EDITABLE_PARAMETERS;
#endif

+19 −0
Original line number Diff line number Diff line
@@ -824,6 +824,25 @@ ivas_error ivas_sba_dec_render(
        }
    }

#ifdef OBJ_EDITING_API
    if ( st_ivas->ivas_format == SBA_ISM_FORMAT || st_ivas->ism_mode == ISM_SBA_MODE_DISC )
    {
        int16_t n;
        float gain = st_ivas->hSbaIsmData->gain_bed;
        if ( gain != 1.0f )
        {
            for ( n = 0; n < nchan_out; n++ )
            {
                int16_t i;
                for ( i = 0; i < L_FRAME48k; i++ )
                {
                    output_f_local[st_ivas->nchan_ism][i] *= gain;
                }
            }
        }
    }
#endif

    *nSamplesAvailableNext = ( hSpar->num_slots - hSpar->slots_rendered ) * slot_size;

    return IVAS_ERR_OK;
+3 −0
Original line number Diff line number Diff line
@@ -680,6 +680,9 @@ typedef struct ivas_osba_data
    float **delayBuffer;
    int16_t delayBuffer_size;
    int16_t delayBuffer_nchan;
#ifdef OBJ_EDITING_API
    float gain_bed;
#endif

} SBA_ISM_DATA, *SBA_ISM_DATA_HANDLE;

+9 −0
Original line number Diff line number Diff line
@@ -1116,6 +1116,7 @@ ivas_error IVAS_DEC_GetEditableParameters(
                hIvasEditableParameters->ism_metadata[obj].radius = hIvasDec->st_ivas->hIsmMetaData[obj]->radius;
                hIvasEditableParameters->ism_metadata[obj].gain = hIvasDec->st_ivas->hIsmMetaData[obj]->edited_gain;
                hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag;
                hIvasEditableParameters->gain_bed = 1.0f;
            }
        }
#ifdef OBJ_EDITING_API
@@ -1131,6 +1132,7 @@ ivas_error IVAS_DEC_GetEditableParameters(
                hIvasEditableParameters->ism_metadata[obj].radius = 0.0f;
                hIvasEditableParameters->ism_metadata[obj].gain = 1.0f;
                hIvasEditableParameters->ism_metadata[obj].non_diegetic_flag = 0;
                hIvasEditableParameters->gain_bed = 1.0f;
            }
        }
        else
@@ -1194,6 +1196,13 @@ ivas_error IVAS_DEC_SetEditableParameters(

                hIvasDec->st_ivas->hIsmMetaData[obj]->non_diegetic_flag = hIvasEditableParameters.ism_metadata[obj].non_diegetic_flag;
            }

#ifdef OBJ_EDITING_API
            if ( hIvasDec->st_ivas->ism_mode == ISM_SBA_MODE_DISC )
            {
                hIvasDec->st_ivas->hSbaIsmData->gain_bed = hIvasEditableParameters.gain_bed;
            }
#endif
        }
#ifdef OBJ_EDITING_API
        else if ( hIvasDec->st_ivas->ism_mode == ISM_MODE_PARAM )