Commit 6091444d authored by TYAGIRIS's avatar TYAGIRIS
Browse files

merge from main

parents 55ffa15c 82eba0ac
Loading
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1975,11 +1975,21 @@ ivas_error preview_indices(
        }
        else if ( st_ivas->ivas_format == SBA_FORMAT )
        {

            /* Read SBA planar flag and SBA order */
            st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA] == 1 );
            st_ivas->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 2] == 1 );
            st_ivas->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_SBA + 1] == 1 );

#ifdef SBA_ORDER_BITSTREAM
            st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order );
#endif

#ifdef SBA_ORDER_BITSTREAM
            ivas_sba_config( total_brate, st_ivas->sba_analysis_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ), st_ivas->sba_mode );
#else
            ivas_sba_config( total_brate, st_ivas->sba_order, -1, &( st_ivas->nchan_transport ), st_ivas->sba_planar, &( st_ivas->nSCE ), &( st_ivas->nCPE ), &( st_ivas->element_mode_init ), st_ivas->sba_mode );
#endif
        }
    }

+1 −0
Original line number Diff line number Diff line
@@ -831,6 +831,7 @@ typedef enum {

#define SBA_PLANAR_BITS                         1
#define SBA_ORDER_BITS                          2
#define SBA_MIN_BRATE_HOA                       IVAS_256k
#define SBA_NHARM_HOA3                          16
#define SBA_T_DESIGN_11_SIZE                    70

+8 −0
Original line number Diff line number Diff line
@@ -82,7 +82,11 @@ ivas_error ivas_dirac_config(
        nCPE = &( (Encoder_Struct *) st_ivas )->nCPE;
        element_mode = &( (Encoder_Struct *) st_ivas )->hEncoderConfig->element_mode_init;
        nchan_transport = &( (Encoder_Struct *) st_ivas )->nchan_transport;
#ifndef SBA_ORDER_BITSTREAM
        sba_order = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->sba_order;
#else
        sba_order = ( (Encoder_Struct *) st_ivas )->sba_analysis_order;
#endif
        sba_planar = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->sba_planar;
        ivas_total_brate = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->ivas_total_brate;
        Fs = ( (Encoder_Struct *) st_ivas )->hEncoderConfig->input_Fs;
@@ -107,7 +111,11 @@ ivas_error ivas_dirac_config(
        nCPE = &( (Decoder_Struct *) st_ivas )->nCPE;
        element_mode = &( (Decoder_Struct *) st_ivas )->element_mode_init;
        nchan_transport = &( (Decoder_Struct *) st_ivas )->nchan_transport;
#ifndef SBA_ORDER_BITSTREAM
        sba_order = ( (Decoder_Struct *) st_ivas )->sba_order;
#else
        sba_order = ( (Decoder_Struct *) st_ivas )->sba_analysis_order;
#endif
        sba_planar = ( (Decoder_Struct *) st_ivas )->sba_planar;
        ivas_total_brate = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->ivas_total_brate;
        Fs = ( (Decoder_Struct *) st_ivas )->hDecoderConfig->output_Fs;

lib_com/ivas_mdft_imdft.c

100644 → 100755
+2 −62
Original line number Diff line number Diff line
@@ -50,72 +50,31 @@

static void ivas_get_mdft_twid_factors(
    const int16_t length,
#ifndef MDFT_ROM_OPTIMIZE
    const float **ppTwid_re,
    const float **ppTwid_im
#else
    const float **ppTwid
#endif
)
    const float **ppTwid )
{
    switch ( length )
    {
        case L_FRAME48k:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_960[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_960[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_960[0];
#endif
            break;
        case L_FRAME32k:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_640[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_640[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_640[0];
#endif

            break;
        case L_FRAME16k:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_320[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_320[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_320[0];
#endif
            break;
        case IVAS_240_PT_LEN:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_240[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_240[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_240[0];
#endif
            break;
        case IVAS_160_PT_LEN:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_160[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_160[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_160[0];
#endif
            break;
        case IVAS_80_PT_LEN:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_80[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_80[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_80[0];
#endif
            break;
        case IVAS_40_PT_LEN:
#ifndef MDFT_ROM_OPTIMIZE
            *ppTwid_re = &ivas_mdft_coeff_cos_twid_40[0];
            *ppTwid_im = &ivas_mdft_coeff_sin_twid_40[0];
#else
            *ppTwid = &ivas_mdft_coeff_cos_twid_40[0];
#endif
            break;

        default:
@@ -256,45 +215,26 @@ void ivas_mdft(
    float re[L_FRAME48k];
    float im[L_FRAME48k];
    int16_t j, len_by_2;
#ifndef MDFT_ROM_OPTIMIZE
    const float *pTwid_re, *pTwid_im;
#else
    const float *pTwid;
#endif
    len_by_2 = mdft_length >> 1;

    ivas_get_mdft_twid_factors( mdft_length,
#ifndef MDFT_ROM_OPTIMIZE
                                &pTwid_re, &pTwid_im
#else
                                &pTwid
#endif
    );
                                &pTwid );

    if ( mdft_length == input_length )
    {
        for ( j = 0; j < mdft_length; j++ )
        {
#ifndef MDFT_ROM_OPTIMIZE
            re[j] = pIn[j] * pTwid_re[j];
            im[j] = -pIn[j] * pTwid_im[j];
#else
            re[j] = pIn[j] * pTwid[j];
            im[j] = -pIn[j] * pTwid[mdft_length - j];
#endif
        }
    }
    else
    {
        for ( j = 0; j < mdft_length; j++ )
        {
#ifndef MDFT_ROM_OPTIMIZE
            re[j] = pIn[j] * pTwid_re[j] - pIn[j + mdft_length] * pTwid_im[j];
            im[j] = -pIn[j] * pTwid_im[j] - pIn[j + mdft_length] * pTwid_re[j];
#else
            re[j] = pIn[j] * pTwid[j] - pIn[j + mdft_length] * pTwid[mdft_length - j];
            im[j] = -pIn[j] * pTwid[mdft_length - j] - pIn[j + mdft_length] * pTwid[j];
#endif
        }
    }

+24 −1
Original line number Diff line number Diff line
@@ -2155,6 +2155,7 @@ void stereo_mdct_core_dec(
void splitAvailableBits(
    const int16_t total_bits,                                   /* i  : total available bits for TCX coding     */
    const int16_t split_ratio,                                  /* i  : split ratio                             */
    const int16_t isSBAStereoMode,                              /* i  : signal core coding for sba              */
    int16_t *bits_ch0,                                          /* o  : bits for channel 0                      */
    int16_t *bits_ch1                                           /* o  : bits for channel 1                      */
);
@@ -2172,6 +2173,7 @@ void parse_stereo_from_bitstream(
    STEREO_MDCT_DEC_DATA_HANDLE hStereoMdct,                    /* i/o: MDCT stereo decoder structure           */
    Decoder_State **sts,                                        /* i/o: decoder state structure                 */
    const int16_t mct_on,                                       /* i  : flag mct block (1) or stereo (0)        */
    const int16_t isSBAStereoMode,                              /* i: flag core coding for sba         */
    Decoder_State *st0,                                         /* i/o: decoder state structure for Bstr        */
    int16_t ms_mask[NB_DIV][MAX_SFB]                            /* o  : bandwise MS mask                        */
);
@@ -2507,6 +2509,9 @@ ivas_error stereo_memory_enc(
    const int16_t max_bwidth,                                   /* i  : maximum audio bandwidth                 */
    float *tdm_last_ratio,                                      /* o  : TD stereo last ratio                    */
    const IVAS_FORMAT ivas_format                               /* i  : IVAS format                             */
    ,
    const int16_t nchan_transport                               /* i  : number transport chans                  */

);

ivas_error stereo_memory_dec(
@@ -3002,7 +3007,7 @@ void ivas_dirac_param_est_enc(
 *----------------------------------------------------------------------------------*/

/*! r: SBA format mode */
int16_t ivas_sba_mode_select( 
SBA_MODE ivas_sba_mode_select( 
    const int32_t ivas_total_brate                              /* i  : IVAS total bitrate                      */
);

@@ -3028,15 +3033,25 @@ void ivas_init_dec_get_num_cldfb_instances(
    int16_t *numCldfbSyntheses                                  /* o  : number of CLDFB synthesis instances     */
);

/*! r: Ambisonic (SBA) order */
int16_t ivas_sba_get_order(
    const int16_t nb_channels,                                  /* i  : Number of ambisonic channels            */
    const int16_t sba_planar                                    /* i  : SBA planar flag                         */
);

#ifdef SBA_ORDER_BITSTREAM
/*! r: Ambisonic (SBA) order used for analysis and coding */
int16_t ivas_sba_get_analysis_order(
    const int32_t ivas_total_brate,                             /* i  : IVAS total bitrate                      */
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
);
#endif

int16_t ivas_sba_get_order_transport(
    const int16_t nchan_transport                               /* i  : Number of transport channels            */
);

/*!r: number of Ambisonic channels */
int16_t ivas_sba_get_nchan(
    const int16_t sba_order,                                    /* i  : Ambisonic (SBA) order                   */
    const int16_t sba_planar                                    /* i  : SBA planar flag                         */
@@ -3853,6 +3868,10 @@ void ivas_spar_dec_upmixer(
ivas_error ivas_spar_md_enc_open(
    ivas_spar_md_enc_state_t **hMdEnc,                          /* i/o: SPAR MD encoder handle                  */
    const ENCODER_CONFIG_HANDLE hEncoderConfig                  /* i  : configuration structure                 */
#ifdef SBA_ORDER_BITSTREAM
    ,
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
#endif
);

void ivas_spar_md_enc_close(
@@ -3865,6 +3884,10 @@ ivas_error ivas_spar_md_enc_process(
    ivas_spar_md_enc_in_buf_t *pIn_buf,
    BSTR_ENC_HANDLE hMetaData,                                  /* i/o: MetaData handle                         */
    const int16_t dtx_silence_mode
#ifdef SBA_ORDER_BITSTREAM
    ,
    const int16_t sba_order                                     /* i  : Ambisonic (SBA) order                   */
#endif
);

void ivas_compute_spar_params(
Loading