Commit a11a9bad authored by Marek Szczerba's avatar Marek Szczerba
Browse files

Config-file based proximity mixing update

parent a8b28778
Loading
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -102,11 +102,6 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
    int16_t override;
    int16_t use_brir;
    int16_t late_reverb_on;
#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
    int16_t do_proximity_mixing;                              /* Flag to turn ON proximity-based mixing */
    int16_t prox_mix_user_locations[IVAS_MAX_INPUT_CHANNELS]; /* user locations array for proximity-based mixing */
    int16_t prox_mix_listener_location;                       /* listener location for proximity-based mixing */
#endif
    int16_t nBands;                                     /* Number of frequency bands for which reverb properties are provided, integer, range [2..256] */
    float pFc_input[IVAS_CLDFB_NO_CHANNELS_MAX];        /* Center frequencies for which following values are provided: */
    float pAcoustic_rt60[IVAS_CLDFB_NO_CHANNELS_MAX];   /*  - The room's T60 per center frequency */
@@ -115,12 +110,24 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG
    float inputPreDelay;                                /* Offset in seconds from where DSR is computed in the RIR (0 = at source), float, range [0.001..10] */
} IVAS_ROOM_ACOUSTICS_CONFIG_DATA;

#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
typedef struct IVAS_PROXIMITY_CONFIG
{
    int16_t active;                                     /* Flag to turn ON proximity-based mixing */
    int16_t object_locations[IVAS_MAX_INPUT_CHANNELS];  /* user locations array for proximity-based mixing */
    int16_t listener_location;                          /* listener location for proximity-based mixing */
} IVAS_PROXIMITY_CONFIG;
#endif

typedef struct _IVAS_RENDER_CONFIG
{
#ifdef DEBUGGING
    IVAS_RENDER_TYPE_OVERRIDE renderer_type_override;
#endif
    IVAS_ROOM_ACOUSTICS_CONFIG_DATA room_acoustics;
#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
    IVAS_PROXIMITY_CONFIG proxMix;
#endif
} IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE;

typedef struct _IVAS_LS_CUSTOM_LAYOUT
+0 −10
Original line number Diff line number Diff line
@@ -4777,19 +4777,9 @@ void computeReferencePower_enc(
    const int16_t num_freq_bands                                /* i  : Number of frequency bands                       */
);


#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
ivas_error ivas_mono_dmx_renderer_open(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                           */
    const int16_t do_proximity_mixing,                          /* i  : flag to enable proximity-based mixing            */
    const int16_t *prox_mix_user_locations,                     /* i  : user locations array for proximity-based mixing  */
    const int16_t prox_mix_listener_location                    /* i  : listener location for proximity-based mixing     */
);
#else /* I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER */
ivas_error ivas_mono_dmx_renderer_open(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                           */
);
#endif /* I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER */

void ivas_mono_downmix_render_passive(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                                */
+0 −5
Original line number Diff line number Diff line
@@ -1273,12 +1273,7 @@ ivas_error ivas_init_decoder(
    }
    else if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX )
    {
#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
        if ( ( error = ivas_mono_dmx_renderer_open( st_ivas, st_ivas->hRenderConfig->roomAcoustics.do_proximity_mixing,
            st_ivas->hRenderConfig->roomAcoustics.prox_mix_user_locations, st_ivas->hRenderConfig->roomAcoustics.prox_mix_listener_location ) ) != IVAS_ERR_OK )
#else
        if ( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ) != IVAS_ERR_OK )
#endif
        {
            return error;
        }
+4 −13
Original line number Diff line number Diff line
@@ -57,18 +57,9 @@
 * Open decoder downmix handle
 *-------------------------------------------------------------------------*/

#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
ivas_error ivas_mono_dmx_renderer_open(
    Decoder_Struct *st_ivas,                   /* i/o: IVAS decoder structure                */
    const int16_t do_proximity_mixing,         /* i  : flag to enable proximity-based mixing */
    const int16_t *prox_mix_user_locations,    /* i  : user locations array for proximity-based mixing */
    const int16_t prox_mix_listener_location   /* i  : listener location for proximity-based mixing */
)
#else /* I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER */
ivas_error ivas_mono_dmx_renderer_open(
    Decoder_Struct *st_ivas /* i/o: IVAS decoder structure  */
)
#endif /* I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER */
{
    MONO_DOWNMIX_RENDERER_HANDLE hDownmix;

@@ -83,12 +74,12 @@ ivas_error ivas_mono_dmx_renderer_open(
    st_ivas->hMonoDmxRenderer = hDownmix;

#ifdef I15_IMPLEMENT_PROX_MIXING_FOR_ISM_DECODER
    hDownmix->do_proximity_mixing = do_proximity_mixing;
    if ( do_proximity_mixing )
    hDownmix->do_proximity_mixing = st_ivas->hRenderConfig->proxMix.active;
    if ( hDownmix->do_proximity_mixing )
    {
        set_zero( hDownmix->powvec, MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS );
        mvs2s( prox_mix_user_locations, hDownmix->userLoc, MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS );
        hDownmix->listenerLoc = prox_mix_listener_location;
        mvs2s( st_ivas->hRenderConfig->proxMix.objectLocations, hDownmix->userLoc, MONO_DOWNMIX_RENDERER_MAX_INPUT_CHANS );
        hDownmix->listenerLoc = st_ivas->hRenderConfig->proxMix.listenerLocation;

#ifdef DEBUG_PROX_MIX_INFO
        int16_t channel_idx;
+1 −4
Original line number Diff line number Diff line
@@ -163,14 +163,11 @@ ivas_error ivas_prox_mixer_compute_gains(
                        sMixer[i] = 0.0f;
                        break;
                    }
                    else
                    {
                    sMixer[j] = 0.0f;
                }
            }
        }
    }
    }

    nrUsers = 0;
    for ( i = 0; i < nChan; i++ )
Loading