Commit df4af9ec authored by TYAGIRIS's avatar TYAGIRIS
Browse files

Merge branch '114-bitrate-switching-in-sba-reconfig' into 'main'

[Non-BE]: Reconfiguration changes for SBA bitrate switching

See merge request !368
parents 407ad654 48df2273
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -920,7 +920,7 @@ typedef enum
{
    DIRAC_OPEN,                                 /* initialize to default value              */
    DIRAC_RECONFIGURE                           /* HOA3                                     */
#ifdef SBA_BR_SWITCHING_2
#ifdef SBA_BR_SWITCHING
    ,
    DIRAC_RECONFIGURE_MODE
#endif
+26 −28
Original line number Diff line number Diff line
@@ -105,6 +105,30 @@ ivas_error mct_enc_reconfigure(
    Encoder_Struct *st_ivas,                                    /* i/o: IVAS encoder structure                  */
    const uint16_t b_nchan_change                               /* i  : flag indicating different channel count */
);
#ifndef SBA_BR_SWITCHING_RECONFIG
#ifdef SBA_BR_SWITCHING
ivas_error ivas_sba_enc_reinit(
    Encoder_Struct *st_ivas /* i/o: IVAS encoder structure      */
);
#endif
#endif
#ifndef SBA_BR_SWITCHING_RECONFIG
#ifdef SBA_BR_SWITCHING
int16_t get_sba_reinit_flag(
    int32_t ivas_total_bitrate,                                /* i  : Current bitrate  */
    int32_t last_ivas_total_brate                              /* i  : Previous bitrate  */
    , int16_t sba_order
);
#endif
#endif
#ifdef SBA_BR_SWITCHING
ivas_error ivas_spar_md_enc_init
(
    ivas_spar_md_enc_state_t *hMdEnc,                         /* o  : MD encoder handle        */
    const ENCODER_CONFIG_HANDLE hEncoderConfig,               /* i  : configuration structure  */
    const int16_t sba_order                                   /* i  : Ambisonic (SBA) order    */
);
#endif
ivas_error ivas_sba_enc_reconfigure( 
    Encoder_Struct *st_ivas                                     /* i/o: IVAS encoder structure                  */
);
@@ -3104,42 +3128,16 @@ void ivas_sba_config(
    int16_t *element_mode                                       /* o  : element mode of the core coder          */
);

ivas_error ivas_sba_enc_reconfigure( 
    Encoder_Struct *st_ivas                                     /* i/o: IVAS encoder structure                  */
);

#ifdef SBA_BR_SWITCHING
ivas_error ivas_sba_enc_reinit(
    Encoder_Struct *st_ivas                                     /* i/o: IVAS encoder structure                  */
);

int16_t get_sba_reinit_flag(
    int32_t ivas_total_bitrate,                                 /* i  : Current bitrate                         */
    int32_t last_ivas_total_brate                               /* i  : Previous bitrate                        */
#ifdef SBA_BR_SWITCHING_2
    , const int16_t sba_order
#endif
);
#endif
#ifdef SBA_BR_SWITCHING_2
ivas_error ivas_spar_md_enc_init
(
    ivas_spar_md_enc_state_t *hMdEnc,                           /* o  : MD encoder handle                       */
    const ENCODER_CONFIG_HANDLE hEncoderConfig,                 /* i  : configuration structure                 */
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
);
#endif

ivas_error ivas_sba_dec_reconfigure(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                  */
);

#ifndef SBA_BR_SWITCHING_RECONFIG
#ifdef SBA_BR_SWITCHING
ivas_error ivas_sba_dec_reinit(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                  */
);
#endif

#endif

void ivas_init_dec_get_num_cldfb_instances(
    Decoder_Struct *st_ivas,                                    /* i  : IVAS decoder structure                  */
+5 −17
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ SBA_MODE ivas_sba_mode_select(

    return sba_mode;
}

#ifndef SBA_BR_SWITCHING_RECONFIG
#ifdef SBA_BR_SWITCHING
/*-------------------------------------------------------------------*
 * get_sba_reinit_flag()
@@ -81,23 +81,14 @@ SBA_MODE ivas_sba_mode_select(

int16_t get_sba_reinit_flag(
    int32_t ivas_total_bitrate,    /* i  : Current bitrate  */
    int32_t last_ivas_total_brate /* i  : Previous bitrate  */
#ifdef SBA_BR_SWITCHING_2
    ,
    const int16_t sba_order
#endif
)
    int32_t last_ivas_total_brate, /* i  : Previous bitrate  */
    int16_t sba_order )
{
    int16_t sba_reinit_flag;

    sba_reinit_flag = 0;
#ifdef SBA_BR_SWITCHING_2
    if ( ivas_total_bitrate != last_ivas_total_brate && ( ivas_total_bitrate > IVAS_SID_5k2 ) )
#else
    if ( ivas_total_bitrate != last_ivas_total_brate && ( last_ivas_total_brate > IVAS_SID_5k2 ) && ( ivas_total_bitrate > IVAS_SID_5k2 ) )
#endif
    {
#ifdef SBA_BR_SWITCHING_2
        int16_t sba_analysis_order, nchan_transport_old, nchan_transport_new;
        SBA_MODE last_sba_mode, current_sba_mode;
        sba_analysis_order = ivas_sba_get_analysis_order( last_ivas_total_brate, sba_order );
@@ -108,17 +99,14 @@ int16_t get_sba_reinit_flag(
        nchan_transport_new = ivas_get_sba_num_TCs( ivas_total_bitrate, min( sba_analysis_order, IVAS_MAX_SBA_ORDER ) );
        if ( ( current_sba_mode != last_sba_mode ) || ( nchan_transport_new != nchan_transport_old ) )
        {
#endif
            sba_reinit_flag = 1;
#ifdef SBA_BR_SWITCHING_2
        }
#endif
    }

    return sba_reinit_flag;
}
#endif

#endif
/*-------------------------------------------------------------------*
 * ivas_sba_config()
 *
+4 −2
Original line number Diff line number Diff line
@@ -141,8 +141,10 @@
#define DISABLE_ADAP_RES_COD_TMP                        /* temporary fix for IVAS-403, disables adaptive residual coding */
/*#define ITD_WINNER_GAIN_MODIFY */                     /* ITD optimization - WORK IN PROGRESS */
/*#define FIX_I4_OL_PITCH*/                             /* fix open-loop pitch used for EVS core switching */
#define SBA_BR_SWITCHING_2                              /* Issue 114: Changes for sba bit rate switching with reconfigurations*/
#define SBA_BR_SWITCHING                                /* Issue 114: Changes for sba bit rate switching*/
#define SBA_BR_SWITCHING                                /* Issue 114: Changes for SBA bit rate switching with reconfiguration for bitrates with same number of transport channels*/
#ifdef SBA_BR_SWITCHING
#define SBA_BR_SWITCHING_RECONFIG                       /* Issue 114: Changes for SBA bitrate switching with reconfiguration for bitrates with different number of transport channels*/
#endif
#define BRATE_SWITCHING_RENDERING                       /* Bitrate switching changes related to the renderers */
#define FIX_I59_DELAY_ROUNDING                          /* Issue 59: rounding in sample domain instead of nanosec for IVAS_ENC_GetDelay() and IVAS_DEC_GetDelay() */
#define FIX_FIX_I59                                     /* Issue 59:  small fix concerning LFE delay rounding */
+11 −2
Original line number Diff line number Diff line
@@ -296,7 +296,10 @@ ivas_error ivas_corecoder_dec_reconfig(
            st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->use_itd = 0;
            st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->reverse_dmx = 0;
            st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->smooth_ratio = 1.f;

#ifdef SBA_BR_SWITCHING_RECONFIG
            st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->IGFStereoMode[0] = -1;
            st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->IGFStereoMode[1] = -1;
#endif
            for ( n = 0; n < CPE_CHANNELS; n++ )
            {
                /* reset mct_chan_mode */
@@ -560,7 +563,13 @@ ivas_error ivas_cldfb_dec_reconfig(
            }
        }
    }

#ifdef SBA_BR_SWITCHING_RECONFIG
    /* CLDFB Interpolation weights */
    if ( st_ivas->sba_mode == SBA_MODE_SPAR && ( numCldfbAnalyses_old != numCldfbAnalyses || numCldfbSyntheses_old != numCldfbSyntheses || nchan_transport_old != st_ivas->nchan_transport ) )
    {
        ivas_spar_get_cldfb_gains( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig );
    }
#endif
    return IVAS_ERR_OK;
}
#endif
Loading