Commit 76142da0 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

SBA path functions conversion, ASAN and MSAN fixes, cleanup

[x] spar process functions/ sub-functions conversion and integration
[x] Cleanup of ivas_dirac_param_est_enc function
[x] Few ASAN and MSAN fixes
[x] Q-info updates for lib_dec and lib_rend files
parent 4a08961e
Loading
Loading
Loading
Loading
Loading
+214 −6
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@
/*------------------------------------------------------------------------------------------*
 * Static functions declarations
 *------------------------------------------------------------------------------------------*/

static void ivas_cmult_fix( Word32 in1_re, Word32 in1_im, Word32 in2_re, Word32 in2_im, Word32 *out1_re, Word32 *out1_im );
static void ivas_get_active_bins( const int16_t **pActive_bins, const int16_t **pActive_bins_abs, const int16_t **pStart_offset, const int16_t **pStart_offset_ab, const int32_t sampling_rate );
static void ivas_get_ld_fb_resp( float **ppIdeal_FRs_re, float **ppIdeal_FRs_im, float **ppNew_FRs_re, float **ppNew_FRs_im, const int16_t *pActive_bins, const int16_t *pStart_offset, const int16_t num_bands, const int16_t delay, const int32_t sampling_rate );
#ifdef IVAS_FLOAT_FIXED
@@ -426,6 +426,21 @@ ivas_error ivas_FB_mixer_open(
                set_f( hFbMixer->prior_mixer[i][j], 0, IVAS_MAX_NUM_BANDS );
            }
        }

        Word32 *pTemp_mem_fx;
        if ( ( pTemp_mem_fx = (Word32 *) malloc( sizeof( Word32 ) * fb_cfg->num_out_chans * max( fb_cfg->num_in_chans, fb_cfg->nchan_fb_in ) * IVAS_MAX_NUM_BANDS ) ) == NULL )
        {
            return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FB mixer" );
        }
        for ( i = 0; i < fb_cfg->num_out_chans; i++ )
        {
            for ( j = 0; j < fb_cfg->num_in_chans; j++ )
            {
                hFbMixer->prior_mixer_fx[i][j] = pTemp_mem_fx;
                pTemp_mem_fx += IVAS_MAX_NUM_BANDS;
                set32_fx( hFbMixer->prior_mixer_fx[i][j], 0, IVAS_MAX_NUM_BANDS );
            }
        }
    }

    if ( !spar_reconfig_flag )
@@ -506,6 +521,12 @@ ivas_error ivas_FB_mixer_open(
        {
            return error;
        }
        Word16 index[IVAS_MAX_NUM_FB_BANDS];
        set16_fx( index, 0, IVAS_MAX_NUM_FB_BANDS );
        if ( ( error = ivas_filterbank_setup_fx( hFbMixer, sampling_rate, index ) ) != IVAS_ERR_OK )
        {
            return error;
        }
    }

    *hFbMixer_out = hFbMixer;
@@ -1400,7 +1421,162 @@ void ivas_fb_mixer_cross_fading_fx(
 *
 * Filter bank process
 *-----------------------------------------------------------------------------------------*/
#ifdef IVAS_FLOAT_FIXED
void ivas_cmult_fix( Word32 in1_re, Word32 in1_im, Word32 in2_re, Word32 in2_im, Word32 *out1_re, Word32 *out1_im )
{
    *out1_re = L_sub_sat( Mpy_32_32( in1_re, in2_re ), Mpy_32_32( in1_im, in2_im ) );
    *out1_im = L_add_sat( Mpy_32_32( in1_re, in2_im ), Mpy_32_32( in2_re, in1_im ) );
}

void ivas_fb_mixer_process(
    IVAS_FB_MIXER_HANDLE hFbMixer,                                                  /* i/o: FB mixer handle                             */
    Word32 ***mixer_mat_fx,                                                         /* i  : mixer matrix                                */
    Word16 *q_mixer_mat_fx,                                                         /* i  : mixer matrix                                */
    Word32 **ppOut_pcm_fx,                                                          /* o  : output audio channels                       */
    Word16 *q_ppOut_pcm_fx,                                                         /*ppOut_pcm_fx resultant q*/
    const Word16 frame_len,                                                         /* i  : frame length in samples                     */
    Word16 in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH] /* i/o: mixing mapping */
)
{
    ivas_filterbank_t *pFb = hFbMixer->pFb;
    Word16 num_bands = pFb->filterbank_num_bands;
    move16();
    Word16 i, j, k, ch, hist;

    const Word32 *pFilterbank_bin_to_band_re_fx;
    const Word32 *pFilterbank_bin_to_band_im_fx;
    Word32 *pMdft_out_fx[2];
    Word32 *pOut_fr_re_fx, *pOut_fr_im_fx;
    Word16 q_pOut_fr_fx = 31;
    move16();
    Word32 Out_fr_re_fx[L_FRAME48k], Out_fr_im_fx[L_FRAME48k];
    Word32 Mdft_out_0_fx[L_FRAME48k * 2], Mdft_out_1_fx[L_FRAME48k * 2];

    pOut_fr_re_fx = Out_fr_re_fx;
    pOut_fr_im_fx = Out_fr_im_fx;
    pMdft_out_fx[0] = Mdft_out_0_fx;
    pMdft_out_fx[1] = Mdft_out_1_fx;

    FOR( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->num_out_chans; ch++ )
    {
        /* Run a loop of 2 to calculate current frame's filterbank output and prev frame's output */
        FOR( hist = 0; hist < 2; hist++ )
        {
            set_zero_fx( pOut_fr_re_fx, frame_len );
            set_zero_fx( pOut_fr_im_fx, frame_len );
            q_pOut_fr_fx = 31;
            move16();
            FOR( j = 0; j < hFbMixer->fb_cfg->num_in_chans; j++ )
            {
                IF( in_out_mixer_map[ch][j] != 0 )
                {

                    Word32 filterbank_mixer_bins_re_fx[L_FRAME48k];
                    Word32 filterbank_mixer_bins_im_fx[L_FRAME48k];
                    Word32 *pFb_inFR_re_fx = hFbMixer->ppFilterbank_inFR_re_fx[j];
                    Word32 *pFb_inFR_im_fx = hFbMixer->ppFilterbank_inFR_im_fx[j];

                    set_zero_fx( filterbank_mixer_bins_re_fx, frame_len );
                    set_zero_fx( filterbank_mixer_bins_im_fx, frame_len );

                    Word16 total_guard = find_guarded_bits_fx( num_bands );
                    move16();
                    FOR( i = 0; i < num_bands; i++ )
                    {
                        Word16 start_offset = pFb->fb_consts.pFilterbank_bins_start_offset[i];
                        move16();
                        Word16 num_bins = pFb->fb_consts.pFilterbank_bins_per_band[i];
                        move16();
                        Word32 mixer_const_fx = hFbMixer->prior_mixer_fx[ch][j][i];
                        move32();
                        pFilterbank_bin_to_band_re_fx = pFb->fb_consts.ppFilterbank_FRs_fx[0][i];
                        pFilterbank_bin_to_band_im_fx = pFb->fb_consts.ppFilterbank_FRs_fx[1][i];

                        FOR( k = start_offset; k < num_bins + start_offset; k++ )
                        {
                            filterbank_mixer_bins_re_fx[k] = L_add_sat( filterbank_mixer_bins_re_fx[k], L_shr( Mpy_32_32( *pFilterbank_bin_to_band_re_fx, mixer_const_fx ), total_guard ) );
                            move32();
                            filterbank_mixer_bins_im_fx[k] = L_add_sat( filterbank_mixer_bins_im_fx[k], L_shr( Mpy_32_32( *pFilterbank_bin_to_band_im_fx, mixer_const_fx ), total_guard ) );
                            move32();
                            /*filterbank_mixer_bins_im_fx q 30 */
                            /*mixer_const_fx q  q_ppOut_pcm_fx */
                            pFilterbank_bin_to_band_re_fx++;
                            pFilterbank_bin_to_band_im_fx++;
                        }
                        hFbMixer->prior_mixer_fx[ch][j][i] = mixer_mat_fx[ch][j][i];
                        move32();
                    }
                    Word16 res_q = 0;
                    move16();
                    FOR( k = 0; k < frame_len; k++ )
                    {
                        Word32 temp_out_re_fx, temp_out_im_fx;

                        Word16 Fb_inFR_com_q = s_min( hFbMixer->q_ppFilterbank_inFR_re_fx[j], hFbMixer->q_ppFilterbank_inFR_im_fx[j] );
                        Word32 inp_Fb_inFR_re, inp_Fb_inFR_im;
                        IF( NE_16( hFbMixer->q_ppFilterbank_inFR_re_fx[j], Fb_inFR_com_q ) )
                        {
                            inp_Fb_inFR_re = L_shr( pFb_inFR_re_fx[k], sub( hFbMixer->q_ppFilterbank_inFR_re_fx[j], Fb_inFR_com_q ) );
                            /*common q for real and imag hFbMixer->q_ppFilterbank_inFR_re_fx[j]*/
                        }
                        ELSE
                        {
                            inp_Fb_inFR_re = pFb_inFR_re_fx[k];
                            /*q hFbMixer->q_ppFilterbank_inFR_re_fx[j]*/
                            move32();
                        }
                        IF( NE_16( hFbMixer->q_ppFilterbank_inFR_im_fx[j], Fb_inFR_com_q ) )
                        {
                            inp_Fb_inFR_im = L_shr( pFb_inFR_im_fx[k], sub( hFbMixer->q_ppFilterbank_inFR_im_fx[j], Fb_inFR_com_q ) );
                            /*common q for real and imag hFbMixer->q_ppFilterbank_inFR_re_fx[j]*/
                        }
                        ELSE
                        {
                            inp_Fb_inFR_im = pFb_inFR_im_fx[k];
                            /*q hFbMixer->q_ppFilterbank_inFR_im_fx[j]*/
                            move32();
                        }
                        ivas_cmult_fix( filterbank_mixer_bins_re_fx[k], filterbank_mixer_bins_im_fx[k], inp_Fb_inFR_re,
                                        inp_Fb_inFR_im, &temp_out_re_fx, &temp_out_im_fx );
                        res_q = sub( add( sub( sub( add( 30, *q_mixer_mat_fx ), 31 ), total_guard ), Fb_inFR_com_q ), 31 );
                        move16();
                        Word16 q_check = s_min( q_pOut_fr_fx, res_q );
                        move16();
                        IF( NE_16( q_check, q_pOut_fr_fx ) )
                        {
                            pOut_fr_re_fx[k] = L_shr( pOut_fr_re_fx[k], sub( q_pOut_fr_fx, q_check ) );
                            move32();
                            pOut_fr_im_fx[k] = L_shr( pOut_fr_im_fx[k], sub( q_pOut_fr_fx, q_check ) );
                            move32();
                        }
                        IF( q_check != res_q )
                        {
                            temp_out_re_fx = L_shr( temp_out_re_fx, sub( res_q, q_check ) );
                            temp_out_im_fx = L_shr( temp_out_im_fx, sub( res_q, q_check ) );
                        }
                        res_q = q_check;
                        move16();
                        pOut_fr_re_fx[k] = L_add_sat( pOut_fr_re_fx[k], temp_out_re_fx );
                        move32();
                        pOut_fr_im_fx[k] = L_add_sat( pOut_fr_im_fx[k], temp_out_im_fx );
                        move32();
                    }
                    q_pOut_fr_fx = res_q;
                    move16();
                }
            }
            ivas_imdft_fx( pOut_fr_re_fx, pOut_fr_im_fx, pMdft_out_fx[hist], frame_len );
        }

        ivas_fb_mixer_cross_fading_fx( hFbMixer, ppOut_pcm_fx, pMdft_out_fx[0], pMdft_out_fx[1], ch, frame_len, frame_len );
        q_ppOut_pcm_fx[ch] = q_pOut_fr_fx;
        move16();
    }

    return;
}

#else
void ivas_fb_mixer_process(
    IVAS_FB_MIXER_HANDLE hFbMixer,                                                   /* i/o: FB mixer handle                             */
    float ***mixer_mat,                                                              /* i  : mixer matrix                                */
@@ -1415,13 +1591,27 @@ void ivas_fb_mixer_process(
    const float *pFilterbank_bin_to_band_re;
    const float *pFilterbank_bin_to_band_im;
    float *pMdft_out[2], *pOut_fr_re, *pOut_fr_im;
#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
    Word32 *pMdft_out_fx[2];
    Word32 **ppOut_pcm_fx = (Word32 **) malloc( hFbMixer->fb_cfg->num_out_chans * sizeof( Word32 * ) );
    for ( ch = 0; ch < hFbMixer->fb_cfg->num_out_chans; ch++ )
    {
        ppOut_pcm_fx[ch] = (Word32 *) malloc( frame_len * sizeof( Word32 ) );
    }
#endif
    float Out_fr_re[L_FRAME48k], Out_fr_im[L_FRAME48k];
    float Mdft_out_0[L_FRAME48k * 2], Mdft_out_1[L_FRAME48k * 2];

#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
    Word32 Mdft_out_0_fx[L_FRAME48k * 2], Mdft_out_1_fx[L_FRAME48k * 2];
#endif
    pOut_fr_re = Out_fr_re;
    pOut_fr_im = Out_fr_im;
    pMdft_out[0] = Mdft_out_0;
    pMdft_out[1] = Mdft_out_1;
#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
    pMdft_out_fx[0] = Mdft_out_0_fx;
    pMdft_out_fx[1] = Mdft_out_1_fx;
#endif

    for ( ch = ( hFbMixer->fb_cfg->active_w_mixing == 0 ); ch < hFbMixer->fb_cfg->num_out_chans; ch++ )
    {
@@ -1476,14 +1666,32 @@ void ivas_fb_mixer_process(

            ivas_imdft( pOut_fr_re, pOut_fr_im, pMdft_out[hist], frame_len );
        }

#ifndef IVAS_FLOAT_FIXED
        ivas_fb_mixer_cross_fading( hFbMixer, ppOut_pcm, pMdft_out[0], pMdft_out[1], ch, frame_len, frame_len );
#else
#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
        Word16 q1 = Q_factor_arrL( pMdft_out[0], frame_len * 2 );
        Word16 q2 = Q_factor_arrL( pMdft_out[1], frame_len * 2 );
        Word16 q = s_min( q1, q2 );
        floatToFixed_arrL( pMdft_out[0], pMdft_out_fx[0], q, frame_len * 2 );
        floatToFixed_arrL( pMdft_out[1], pMdft_out_fx[1], q, frame_len * 2 );
#endif
        ivas_fb_mixer_cross_fading_fx( hFbMixer, ppOut_pcm_fx, pMdft_out_fx[0], pMdft_out_fx[1], ch, frame_len, frame_len );
#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
        fixedToFloat_arrL( ppOut_pcm_fx[ch], ppOut_pcm[ch], q, frame_len );
#endif
#endif
    }

#ifdef IVAS_FLOAT_FIXED_CONVERSIONS
    for ( ch = 0; ch < hFbMixer->fb_cfg->num_out_chans; ch++ )
    {
        free( ppOut_pcm_fx[ch] );
    }
    free( ppOut_pcm_fx );
#endif
    return;
}


#endif
/*-----------------------------------------------------------------------------------------*
 * Function ivas_fb_mixer_get_in_out_mapping()
 *
+32 −3
Original line number Diff line number Diff line
@@ -4706,6 +4706,23 @@ int16_t ivas_chan_project_elevation_index(
);
#endif

#ifdef IVAS_FLOAT_FIXED
void ivas_dirac_param_est_enc(
    DIRAC_ENC_HANDLE hDirAC,
    IVAS_QDIRECTION *q_direction,
    const UWord8 useLowerRes,
    Word32 *data_f_fx[],
    Word32 **pp_fr_real_fx,
    Word32 **pp_fr_imag_fx,
    Word16 pp_fr_q,
    const Word16 input_frame,
    const IVAS_FORMAT ivas_format,
    const Word16 hodirac_flag,
    const Word16 nchan_fb_in,
    Word16 *mono_frame_count,
    Word16 *dirac_mono_flag
);
#else
void ivas_dirac_param_est_enc( 
    DIRAC_ENC_HANDLE hDirAC, 
    IVAS_QDIRECTION *q_direction, 
@@ -4720,6 +4737,7 @@ void ivas_dirac_param_est_enc(
    int16_t *mono_frame_count,
    int16_t *dirac_mono_flag
 );
#endif


void ivas_sba_config(
@@ -8409,6 +8427,17 @@ void ivas_fb_mixer_get_windowed_fr(
    const int16_t nchan_fb_in                                   /* i  : number of analysis channels                 */
);

#ifdef IVAS_FLOAT_FIXED
void ivas_fb_mixer_process( 
    IVAS_FB_MIXER_HANDLE hFbMixer,                              /* i/o: FB mixer handle                             */
    Word32 ***mixer_mat_fx,                                         /* i  : mixer matrix in q_mixer_mat_fx                                */
    Word16 *q_mixer_mat_fx,                                         /* i  : mixer matrix                                */
    Word32 **ppOut_pcm_fx,                                          /* o  : output audio channels in ppOut_pcm_fx resultant                       */
    Word16 *q_ppOut_pcm_fx,                                       /*ppOut_pcm_fx resultant q*/
    const int16_t frame_len,                                    /* i  : frame length in samples                     */
    int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]     /* i/o: mixing mapping     */
);
#else
void ivas_fb_mixer_process(
  IVAS_FB_MIXER_HANDLE hFbMixer,                              /* i/o: FB mixer handle                             */
  float ***mixer_mat,                                         /* i  : mixer matrix                                */
@@ -8416,7 +8445,7 @@ void ivas_fb_mixer_process(
  const int16_t frame_len,                                    /* i  : frame length in samples                     */
  int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]     /* i/o: mixing mapping     */
);

#endif
void ivas_fb_mixer_get_in_out_mapping(
    const IVAS_FB_CFG *fb_cfg,                                  /* i  : FB config. handle                           */
    int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]   /* i/o: mixing mapping       */
+10 −10
Original line number Diff line number Diff line
@@ -1911,15 +1911,15 @@ void ivas_GenShapedWBExcitation_fx(
    const Word16 uv_flag,         /* i : unvoiced flag */
    const Word16 igf_flag );

Word16 ivas_wb_bwe_dec_fx(
Word16 ivas_wb_bwe_dec_fx(                                 /* o : Q_syn_hb*/
                           Decoder_State *st_fx,           /* i/o: decoder state structure                 */
    const Word16 output[],          /* i  : suntehsis @ internal Fs */
    Word16 *synth_fx,               /* i/o: ACELP core synthesis/final synthesis    */
    Word16 *hb_synth_fx,            /* o  : SHB synthesis/final synthesis           */
                           const Word16 output[],          /* i  : suntehsis @ internal Fs Q_input */
                           Word16 *synth_fx,               /* i/o: ACELP core synthesis/final synthesis   Q0/Qpost */
                           Word16 *hb_synth_fx,            /* o  : SHB synthesis/final synthesis          Q_syn_hb */
                           const Word16 use_cldfb_for_dft, /* i  : flag to use of CLDFB for DFT Stereo     */
                           const Word16 output_frame,      /* i  : frame length                            */
    Word16 *voice_factors_fx,       /* i  : voicing factors                         */
    const Word16 pitch_buf_fx[],    /* i  : pitch buffer                            */
                           Word16 *voice_factors_fx,       /* i  : voicing factors                        Q15 */
                           const Word16 pitch_buf_fx[],    /* i  : pitch buffer                           Q6 */
                           Word16 *Qpost );

void ivas_param_ism_config_fx(
+68 −38
Original line number Diff line number Diff line
@@ -1634,46 +1634,76 @@ const Word32 shoebox_sin_cos_tbl_fx[11][2] = { { 0, 1073741824 }, // 0
                                               { 759250112, -759250112 },
                                               { -759250112, -759250112 } }; // 135, -135   //Q.30

const Word32 delta_phi_val[90] = {
    0, 1509949440, 754974720, 503316480, 377487360, 301989888,
    251658240, 215707056, 188743680, 167772160, 150994944,
    137268128, 125829120, 116149960, 107853528, 100663296,
    94371840, 88820552, 83886080, 79471024, 75497472,
    71902352, 68634064, 65649976, 62914560, 60397976,
    58074980, 55924052, 53926764, 52067224, 50331648,
    48708048, 47185920, 45756044, 44410276, 43141412,
    41943040, 40809444, 39735512, 38716652, 37748736,
    36828036, 35951176, 35115104, 34317032, 33554432,
    32824988, 32126584, 31457280, 30815294, 30198988,
    29606852, 29037490, 28489612, 27962026, 27453626,
    26963382, 26490342, 26033612, 25592364, 25165824,
    24753270, 24354024, 23967452, 23592960, 23229992,
    22878022, 22536558, 22205138, 21883326, 21570706,
    21266894, 20971520, 20684238, 20404722, 20132660,
    19867756, 19609732, 19358326, 19113284, 18874368,
    18641352, 18414018, 18192162, 17975588, 17764112,
    17557552, 17355740, 17158516, 16965724
const Word32 delta_phi_val[257] = {
    0,
    1509949440, 754974720, 503316480, 377487360, 301989888, 251658240, 215707056, 188743680,
    167772160, 150994944, 137268128, 125829120, 116149960, 107853528, 100663296, 94371840,
    88820552, 83886080, 79471024, 75497472, 71902352, 68634064, 65649976, 62914560,
    60397976, 58074980, 55924052, 53926764, 52067224, 50331648, 48708048, 47185920,
    45756044, 44410276, 43141412, 41943040, 40809444, 39735512, 38716652, 37748736,
    36828036, 35951176, 35115104, 34317032, 33554432, 32824988, 32126584, 31457280,
    30815294, 30198988, 29606852, 29037490, 28489612, 27962026, 27453626, 26963382,
    26490342, 26033612, 25592364, 25165824, 24753270, 24354024, 23967452, 23592960,
    23229992, 22878022, 22536558, 22205138, 21883326, 21570706, 21266894, 20971520,
    20684238, 20404722, 20132660, 19867756, 19609732, 19358326, 19113284, 18874368,
    18641352, 18414018, 18192162, 17975588, 17764112, 17557552, 17355740, 17158516,
    16965724, 16777216, 16592851, 16412494, 16236015, 16063292, 15894205, 15728640,
    15566489, 15407647, 15252015, 15099494, 14949994, 14803426, 14659703, 14518745,
    14380471, 14244806, 14111677, 13981013, 13852747, 13726813, 13603148, 13481691,
    13362384, 13245171, 13129995, 13016806, 12905551, 12796182, 12688651, 12582912,
    12478921, 12376635, 12276012, 12177012, 12079596, 11983726, 11889366, 11796480,
    11705034, 11614996, 11526332, 11439011, 11353003, 11268279, 11184811, 11102569,
    11021529, 10941663, 10862946, 10785353, 10708861, 10633447, 10559087, 10485760,
    10413444, 10342119, 10271765, 10202361, 10133889, 10066330, 9999665, 9933878,
    9868951, 9804866, 9741609, 9679163, 9617512, 9556642, 9496537, 9437184,
    9378568, 9320676, 9263493, 9207009, 9151209, 9096081, 9041613, 8987794,
    8934612, 8882056, 8830114, 8778776, 8728031, 8677870, 8628283, 8579258,
    8530788, 8482862, 8435472, 8388608, 8342262, 8296425, 8251090, 8206247,
    8161889, 8118007, 8074596, 8031646, 7989150, 7947102, 7905494, 7864320,
    7823572, 7783244, 7743330, 7703823, 7664718, 7626007, 7587685, 7549747,
    7512186, 7474997, 7438174, 7401713, 7365607, 7329851, 7294441, 7259372,
    7224638, 7190235, 7156158, 7122403, 7088964, 7055838, 7023020, 6990506,
    6958292, 6926373, 6894746, 6863406, 6832350, 6801574, 6771073, 6740845,
    6710886, 6681192, 6651759, 6622585, 6593665, 6564997, 6536577, 6508403,
    6480469, 6452775, 6425317, 6398091, 6371094, 6344325, 6317780, 6291456,
    6265350, 6239460, 6213783, 6188317, 6163059, 6138006, 6113155, 6088506,
    6064054, 6039798, 6015735, 5991863, 5968179, 5944683, 5921370, 5898240
};

const Word32 inv_delta_phi_val[90] = {
    0, 5965232, 11930464, 17895697, 23860929, 29826161,
    35791394, 41756626, 47721858, 53687091, 59652323,
    65617555, 71582788, 77548020, 83513252, 89478485,
    95443717, 101408950, 107374182, 113339414, 119304647,
    125269879, 131235111, 137200344, 143165576, 149130808,
    155096041, 161061273, 167026505, 172991738, 178956970,
    184922203, 190887435, 196852667, 202817900, 208783132,
    214748364, 220713597, 226678829, 232644061, 238609294,
    244574526, 250539758, 256504991, 262470223, 268435456,
    274400688, 280365920, 286331153, 292296385, 298261617,
    304226850, 310192082, 316157314, 322122547, 328087779,
    334053011, 340018244, 345983476, 351948708, 357913941,
    363879173, 369844406, 375809638, 381774870, 387740103,
    393705335, 399670567, 405635800, 411601032, 417566264,
    423531497, 429496729, 435461961, 441427194, 447392426,
    453357659, 459322891, 465288123, 471253356, 477218588,
    483183820, 489149053, 495114285, 501079517, 507044750,
    513009982, 518975214, 524940447, 530905679
const Word32 inv_delta_phi_val[257] = {
    0,
    5965232, 11930465, 17895698, 23860930, 29826162, 35791396, 41756628, 47721860,
    53687092, 59652324, 65617556, 71582792, 77548024, 83513256, 89478488, 95443720,
    101408952, 107374184, 113339416, 119304648, 125269880, 131235112, 137200352, 143165584,
    149130816, 155096048, 161061280, 167026512, 172991744, 178956976, 184922208, 190887440,
    196852672, 202817904, 208783136, 214748368, 220713600, 226678832, 232644064, 238609296,
    244574528, 250539760, 256504992, 262470224, 268435456, 274400704, 280365920, 286331168,
    292296384, 298261632, 304226848, 310192096, 316157312, 322122560, 328087776, 334053024,
    340018240, 345983488, 351948704, 357913952, 363879168, 369844416, 375809632, 381774880,
    387740096, 393705344, 399670560, 405635808, 411601024, 417566272, 423531488, 429496736,
    435461952, 441427200, 447392416, 453357664, 459322880, 465288128, 471253344, 477218592,
    483183808, 489149056, 495114272, 501079520, 507044736, 513009984, 518975200, 524940448,
    530905664, 536870912, 542836160, 548801408, 554766592, 560731840, 566697088, 572662336,
    578627520, 584592768, 590558016, 596523264, 602488448, 608453696, 614418944, 620384192,
    626349376, 632314624, 638279872, 644245120, 650210304, 656175552, 662140800, 668106048,
    674071232, 680036480, 686001728, 691966976, 697932160, 703897408, 709862656, 715827904,
    721793088, 727758336, 733723584, 739688832, 745654016, 751619264, 757584512, 763549760,
    769514944, 775480192, 781445440, 787410688, 793375872, 799341120, 805306368, 811271616,
    817236864, 823202048, 829167296, 835132544, 841097792, 847062976, 853028224, 858993472,
    864958720, 870923904, 876889152, 882854400, 888819648, 894784832, 900750080, 906715328,
    912680576, 918645760, 924611008, 930576256, 936541504, 942506688, 948471936, 954437184,
    960402432, 966367616, 972332864, 978298112, 984263360, 990228544, 996193792, 1002159040,
    1008124288, 1014089472, 1020054720, 1026019968, 1031985216, 1037950400, 1043915648, 1049880896,
    1055846144, 1061811328, 1067776576, 1073741824, 1079707008, 1085672320, 1091637504, 1097602816,
    1103568000, 1109533184, 1115498496, 1121463680, 1127428864, 1133394176, 1139359360, 1145324672,
    1151289856, 1157255040, 1163220352, 1169185536, 1175150720, 1181116032, 1187081216, 1193046528,
    1199011712, 1204976896, 1210942208, 1216907392, 1222872576, 1228837888, 1234803072, 1240768384,
    1246733568, 1252698752, 1258664064, 1264629248, 1270594432, 1276559744, 1282524928, 1288490240,
    1294455424, 1300420608, 1306385920, 1312351104, 1318316288, 1324281600, 1330246784, 1336212096,
    1342177280, 1348142464, 1354107776, 1360072960, 1366038272, 1372003456, 1377968640, 1383933952,
    1389899136, 1395864320, 1401829632, 1407794816, 1413760128, 1419725312, 1425690496, 1431655808,
    1437620992, 1443586176, 1449551488, 1455516672, 1461481984, 1467447168, 1473412352, 1479377664,
    1485342848, 1491308032, 1497273344, 1503238528, 1509203840, 1515169024, 1521134208, 1527099520
};

const Word32 dd_val[90] = {
+2 −2

File changed.

Preview size limit exceeded, changes collapsed.

Loading