Commit 79add5ec authored by emerit's avatar emerit
Browse files

Merge branch '1813_ref_port_MR1524' into 'ivas-float-update'

1813 ref port mr1524

See merge request !1888
parents 00a7f361 ba6cc674
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -188,6 +188,8 @@
#define CONF_DISTATT                                    /* Eri: Make distance attenuation configurable */
#define FIX_1052_EXT_OUTPUT                             /* VA: issue 1052: define EXT decoder output configuration for stereo and MC formats */ 

#define NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT   /* fix 1070 USAN: nullptr-with-offset and Segfaults in 7_1_4 to BINAURAL and BINAURAL_ROOM_REVERB decoding with bitrate switching and head rotation*/ 

/* #################### End BASOP porting switches ############################ */

/* clang-format on */
+35 −2
Original line number Diff line number Diff line
@@ -1622,10 +1622,27 @@ ivas_error ivas_jbm_dec_flush_renderer(
        {
            if ( mc_mode_old == MC_MODE_MCT )
            {
#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
                int16_t crendInPlaceRotation = FALSE;

                if ( st_ivas->transport_config != intern_config_old && ( intern_config_old == IVAS_AUDIO_CONFIG_FOA || intern_config_old == IVAS_AUDIO_CONFIG_HOA2 || intern_config_old == IVAS_AUDIO_CONFIG_HOA3 ) )
                {
                    if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) < ( hIntSetupOld->nchan_out_woLFE + hIntSetupOld->num_lfe ) )
                    {
                        crendInPlaceRotation = TRUE;
                        ivas_mc2sba( st_ivas->hTransSetup, hTcBuffer->tc, p_output, hTcBuffer->n_samples_granularity, hIntSetupOld->ambisonics_order, GAIN_LFE );
                    }
                }
#endif
                if ( renderer_type_old == RENDERER_BINAURAL_MIXER_CONV || renderer_type_old == RENDERER_BINAURAL_MIXER_CONV_ROOM )
                {
#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
                    if ( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
                                                                   hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, crendInPlaceRotation ? p_output : st_ivas->hTcBuffer->tc, p_output, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ) != IVAS_ERR_OK )
#else
                    if ( ( error = ivas_rend_crendProcessSubframe( st_ivas->hCrendWrapper, intern_config_old, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, st_ivas->hCombinedOrientationData,
                                                                   hIntSetupOld, st_ivas->hEFAPdata, st_ivas->hTcBuffer, hTcBuffer->tc, p_output, hTcBuffer->n_samples_granularity, st_ivas->hDecoderConfig->output_Fs, 0 ) ) != IVAS_ERR_OK )
#endif
                    {
                        return error;
                    }
@@ -2256,7 +2273,12 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
    const int16_t n_samples_granularity     /* i  : granularity of the renderer/buffer  */
)
{

#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
    int32_t nsamp_to_allocate;
#else
    int16_t nsamp_to_allocate;
#endif
    DECODER_TC_BUFFER_HANDLE hTcBuffer;
    int16_t nMaxSlotsPerSubframe;
    int16_t nchan_residual;
@@ -2335,8 +2357,11 @@ ivas_error ivas_jbm_dec_tc_buffer_open(
                {
                    return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for JBM TC Buffer\n" ) );
                }
#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
                set_zero_l( hTcBuffer->tc_buffer, nsamp_to_allocate );
#else
                set_zero( hTcBuffer->tc_buffer, nsamp_to_allocate );

#endif
                offset = 0;
                for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ )
                {
@@ -2381,7 +2406,12 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
    const int16_t n_samples_granularity     /* i  : new granularity of the renderer/buffer  */
)
{
#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
    int32_t nsamp_to_allocate, offset;
    int16_t n_samp_full, n_samp_residual, nchan_residual;
#else
    int16_t nsamp_to_allocate, n_samp_full, n_samp_residual, offset, nchan_residual;
#endif
    int16_t ch_idx;
    DECODER_TC_BUFFER_HANDLE hTcBuffer;

@@ -2468,8 +2498,11 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure(
            {
                return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for JBM TC Buffer\n" ) );
            }
#ifdef NONBE_FIX_1070_USAN_SEGFAULT_MC_TO_BIN_BTSW_HEADROT
            set_zero_l( hTcBuffer->tc_buffer, nsamp_to_allocate );
#else
            set_zero( hTcBuffer->tc_buffer, nsamp_to_allocate );

#endif
            offset = 0;
            for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ )
            {