Commit 11be5e87 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch 'fxd_sub_funcs_integration_9' into 'main'

Integration of fixed point sub-functions 9.

See merge request !234
parents 9c36bddf 97fc5f51
Loading
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -2006,8 +2006,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_10_fx;
				hs->q_scale = norm_s((Word16)LDQMF_10_SCALE);
@@ -2061,8 +2061,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_16_fx;
				hs->q_scale = norm_s((Word16)LDQMF_16_SCALE);
@@ -2116,8 +2116,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15390;
                hs->p_filter = LDQMF_20_fx;
				hs->q_scale = norm_s((Word16)LDQMF_20_SCALE);
@@ -2171,8 +2171,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15388;
                hs->p_filter = LDQMF_30_fx;
				hs->q_scale = norm_s((Word16)LDQMF_30_SCALE);
@@ -2226,8 +2226,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15392;
                hs->p_filter = LDQMF_32_fx;
				hs->q_scale = norm_s((Word16)LDQMF_32_SCALE);
@@ -2281,8 +2281,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = LDQMF_40_fx;
				hs->q_scale = norm_s((Word16)LDQMF_40_SCALE);
@@ -2315,8 +2315,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = NULL;
                hs->rot_vec_ana_delay_im_fx = NULL;
                hs->rot_vec_syn_delay_im_fx = NULL;
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->rot_vec_syn_delay_im_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_60_fx;
				hs->q_scale = norm_s((Word16)CLDFB80_60_SCALE);
@@ -2336,8 +2336,8 @@ static void cldfb_init_proto_and_twiddles(
#ifdef IVAS_FLOAT_FIXED
                hs->rot_vec_ana_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_ana_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_im_LDQMF_fx;
                hs->rot_vec_syn_delay_re_fx = rot_vec_delay_re_LDQMF_fx;
                hs->rot_vec_syn_delay_im_fx = rot_vec_delay_im_LDQMF_fx;
                hs->p_filter_sf = (Word16) 15391;
                hs->p_filter = LDQMF_60_fx;
				hs->q_scale = norm_s((Word16)LDQMF_60_SCALE);
+18 −0
Original line number Diff line number Diff line
@@ -1237,6 +1237,17 @@ void ivas_param_ism_dec_render(
    float *output_f[]                                           /* o  : rendered time signal                        */
);

#ifdef IVAS_FLOAT_FIXED
void ivas_param_ism_dec_render_fx(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder handle                         */
    const uint16_t nSamplesAsked,                               /* i  : number of CLDFB slots requested             */
    uint16_t *nSamplesRendered,                                 /* o  : number of CLDFB slots rendered              */
    uint16_t *nSamplesAvailable,                                /* o  : number of CLDFB slots still to render       */
    float *output_f[],                                           /* o  : rendered time signal                        */
    Word32 *output_f_fx[]
);
#endif

void ivas_param_ism_params_to_masa_param_mapping(
    Decoder_Struct *st_ivas                                     /* i/o: IVAS decoder structure                      */
);
@@ -6171,6 +6182,13 @@ void ivas_ls_setup_conversion_process_mdct(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                          */
    float *output[]                                             /* i/o: output synthesis signal                         */
);
#ifdef IVAS_FLOAT_FIXED
void ivas_ls_setup_conversion_process_mdct_param_mc_fx(
    Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure          */
    Word32 *x_fx[][NB_DIV],       /* i/o: Fixed output synthesis signal         */
    Word16 x_e[MAX_CICP_CHANNELS][NB_DIV]/* i/o: Exponent for output synthesis signal */
);
#endif // IVAS_FLOAT_FIXED

void ivas_ls_setup_conversion_process_mdct_param_mc(
    Decoder_Struct *st_ivas,                                    /* i/o: IVAS decoder structure                          */
+1 −1
Original line number Diff line number Diff line
@@ -1330,7 +1330,7 @@ void ivas_mdct_core_tns_ns_fx(
    Word32 *x_fx[CPE_CHANNELS][NB_DIV],                          /* o  : synthesis @internal_FS                 */
    Word32 Aq_fx[CPE_CHANNELS][(NB_SUBFR16k + 1) * (M + 1)], /* o  : LP coefficients                        */
    const Word16 MCT_flag,                                   /* i  : hMCT handle allocated (1) or not (0)   */
    Word16 x_e[CPE_CHANNELS][NB_DIV]
    Word16 x_e[MAX_CICP_CHANNELS][NB_DIV]
);

void decoder_tcx_imdct_fx(
+445 −6

File changed.

Preview size limit exceeded, changes collapsed.

+17 −0
Original line number Diff line number Diff line
@@ -3578,7 +3578,24 @@ ivas_error ivas_jbm_dec_render(
            }
            else if ( st_ivas->renderer_type == RENDERER_PARAM_ISM || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC )
            {
#ifdef IVAS_FLOAT_FIXED
                Word32 output_fx_tmp[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS][L_FRAME48k];
                Word32 *p_output_fx_tmp[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS];
                FOR( Word16 lp = 0; lp < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; lp++ )
                {
                    p_output_fx_tmp[lp] = &output_fx_tmp[lp][0];
                }
                
                Word16 Q_p_output_buf = Q11;
                FOR(i = 0; i < st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; i++)
                {
                    floatToFixed_arrL(p_output[i], p_output_fx_tmp[i], Q_p_output_buf, L_FRAME48k);
                }

                ivas_param_ism_dec_render_fx(st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output, p_output_fx_tmp);
#else
                ivas_param_ism_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output );
#endif

                if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC )
                {
Loading