Commit 16f2b90b authored by Archit Tamarapu's avatar Archit Tamarapu
Browse files

match loudness for FOA and MONO binaural outputs

parent 2b2b178a
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -320,12 +320,20 @@ ivas_error ivas_dec_render(
    }
    else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT )
    {
        const float att = 0.6309573445; // powf( 10.f, -4f / 20.f );
        nchan_remapped = nchan_transport_rend;

        /* Loudspeakers, Ambisonics or Binaural rendering */
        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_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output );
            if ( output_config == IVAS_AUDIO_CONFIG_BINAURAL )
            {
                for ( n = 0; n < BINAURAL_CHANNELS; ++n )
                {
                    v_multc( p_output[n], att, p_output[n], *nSamplesRendered );
                }
            }
        }
        else if ( st_ivas->ivas_format == MASA_FORMAT )
        {
@@ -340,6 +348,13 @@ ivas_error ivas_dec_render(
            {
                return error;
            }
            if ( output_config == IVAS_AUDIO_CONFIG_BINAURAL )
            {
                for ( n = 0; n < BINAURAL_CHANNELS; ++n )
                {
                    v_multc( p_output[n], att, p_output[n], *nSamplesRendered );
                }
            }
        }
    }
    else if ( st_ivas->ivas_format == MASA_ISM_FORMAT )
+3 −0
Original line number Diff line number Diff line
@@ -228,9 +228,12 @@ void ivas_apply_non_diegetic_panning(
)
{
    float pan_left, pan_right;
    const float gain = 1.412537545f; // powf( 10.f, 3.f / 20.f );

    pan_left = ( non_diegetic_pan_gain + 1.f ) * 0.5f;
    pan_right = 1.f - pan_left;
    pan_left *= gain;
    pan_right *= gain;
    v_multc( input_f, pan_right, output_f[1], output_frame );
    v_multc( input_f, pan_left, output_f[0], output_frame );