Commit 6cd89937 authored by TYAGIRIS's avatar TYAGIRIS
Browse files

Merge branch 'dlb_sba_vlbr_20ms_optimization' into 'main'

Fix failures for DTX selection testing: Issue#609

See merge request !830
parents ba9b8de5 99fadb15
Loading
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -4252,6 +4252,10 @@ void ivas_sba_mix_matrix_determiner(
    const int16_t bfi,                                          /* i  : BFI flag                                */
    const int16_t nchan_remapped,                               /* i  : num channels after remapping of TCs     */
    const int16_t output_frame                                  /* i  : output frame length                     */
#ifdef VLBR_20MS_MD
    ,
    const int16_t num_md_sub_frames                             /* i : number of subframes in mixing matrix  */
#endif
);

/* AGC */
@@ -4554,7 +4558,23 @@ void ivas_get_spar_md_from_dirac(
int16_t ivas_get_spar_dec_md_num_subframes(
    const int16_t sba_order,                                    /* i  : Ambisonic (SBA) order                   */
    const int32_t ivas_total_brate                              /* i  : IVAS total bitrate                      */
#ifdef VLBR_20MS_MD
    ,
    const int32_t ivas_last_active_brate /* i  : IVAS last active bitrate           */
#endif
);
#ifdef VLBR_20MS_MD

ivas_error ivas_spar_md_dec_matrix_open(
    ivas_spar_md_dec_state_t *hMdDec, /* i/o: SPAR MD decoder handle       */
    const int16_t num_channels,       /* i  : number of internal channels  */
    const int16_t num_md_sub_frames );

void ivas_spar_md_dec_matrix_close(
    ivas_spar_md_dec_state_t *hMdDecoder, /* i/o: SPAR MD decoder handle      */
    const int16_t num_channels );            /* i  : number of internal channels */
    
#endif

ivas_error ivas_spar_md_dec_open(
    ivas_spar_md_dec_state_t **hMdDec_out,                      /* i/o: SPAR MD decoder handle                  */
@@ -4562,6 +4582,10 @@ ivas_error ivas_spar_md_dec_open(
    const int16_t num_channels,                                 /* i  : number of internal channels             */
	const int16_t sba_order,                                    /* i  : SBA order                               */
    const int16_t sid_format                                    /* i  : SID format                              */
#ifdef VLBR_20MS_MD
    ,
    const int32_t last_active_ivas_total_brate /* i  : IVAS last active bitrate           */
#endif
);

void ivas_spar_md_dec_close(
+2 −0
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@
/* only BE switches wrt operation points tested in selection */

/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */

#define VLBR_20MS_MD                                    /* Dlb: SBA VLBR 20ms Optimization*/
#define SBA_MODE_CLEANUP_2                              /* Dlb : changes part of fix issue #523 for unused signaling bit in SBA SID*/
#define FIX_137_SID_MD_BITS                             /* Dlb: Fix issue #137 , SID bitrate mismatch correction */
#define FIX_563_PARAMMC_LIMITER                         /* FhG: issue 563: fix ILD limiter when coming from silence w/o transient set             */
+15 −1
Original line number Diff line number Diff line
@@ -71,6 +71,9 @@ ivas_error ivas_dec(
    float pan_left, pan_right;
    ivas_error error;
    float *p_output[MAX_OUTPUT_CHANNELS];
#ifdef VLBR_20MS_MD
    int16_t num_md_sub_frames;
#endif

    error = IVAS_ERR_OK;

@@ -388,7 +391,12 @@ ivas_error ivas_dec(
                }

                ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi,
                                           ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) );
                                           ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate
#ifdef VLBR_20MS_MD
                                                                               ,
                                                                               st_ivas->last_active_ivas_total_brate
#endif
                                                                               ) );
            }

            ivas_sba_dirac_stereo_dec( st_ivas, output, output_frame, st_ivas->ivas_format == MC_FORMAT );
@@ -411,7 +419,13 @@ ivas_error ivas_dec(

            if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM )
            {
#ifdef VLBR_20MS_MD
                num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate,
                                                                        st_ivas->last_active_ivas_total_brate );
                ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame, num_md_sub_frames );
#else
                ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame );
#endif
            }
            else if ( st_ivas->renderer_type != RENDERER_DISABLE )
            {
+19 −1
Original line number Diff line number Diff line
@@ -82,6 +82,9 @@ ivas_error ivas_jbm_dec_tc(
    AUDIO_CONFIG output_config;
    ivas_error error;
    float *p_output[MAX_TRANSPORT_CHANNELS];
#ifdef VLBR_20MS_MD
    int16_t num_md_sub_frames;
#endif

    error = IVAS_ERR_OK;

@@ -259,7 +262,12 @@ ivas_error ivas_jbm_dec_tc(
                }

                ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi,
                                           ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) );
                                           ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate
#ifdef VLBR_20MS_MD
                                                                               ,
                                                                               st_ivas->last_active_ivas_total_brate
#endif
                                                                               ) );
            }

            ivas_sba_dirac_stereo_dec( st_ivas, output, output_frame, st_ivas->ivas_format == MC_FORMAT );
@@ -282,7 +290,17 @@ ivas_error ivas_jbm_dec_tc(

            if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM )
            {
#ifdef VLBR_20MS_MD
                num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate
#ifdef VLBR_20MS_MD
                                                                        ,
                                                                        st_ivas->last_active_ivas_total_brate
#endif
                );
                ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame, num_md_sub_frames );
#else
                ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame );
#endif
            }
            else
            {
+13 −0
Original line number Diff line number Diff line
@@ -1177,7 +1177,20 @@ void ivas_spar_param_to_masa_param_mapping(
        }
        else
        {

#ifdef VLBR_20MS_MD
            mixer_mat_index = ( ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate
#ifdef VLBR_20MS_MD
                                                                    ,
                                                                    st_ivas->last_active_ivas_total_brate
#endif
                                                                    ) == 1 )
                                  ? 0
                                  : ( sf - SPAR_META_DELAY_SUBFRAMES );
#else

            mixer_mat_index = sf - SPAR_META_DELAY_SUBFRAMES;
#endif
            for ( band = 0; band < SPAR_DIRAC_SPLIT_START_BAND; band++ )
            {
                for ( i = 0; i < FOA_CHANNELS; i++ )
Loading