Commit 033b2845 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch 'remove_scale_cldfb_filter_bank' into 'main'

Removal of scale of CLDFB_FILTER_BANK from decoder

See merge request !387
parents 23094e13 093fd8d2
Loading
Loading
Loading
Loading
+14 −28
Original line number Diff line number Diff line
@@ -2043,8 +2043,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17036;
                hs->p_filter = CLDFB80_10_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_10_SCALE );
                hs->scale = (Word16) ( CLDFB80_10_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_10_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2064,8 +2063,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_10_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_10_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2098,8 +2096,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_16_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_16_SCALE );
                hs->scale = (Word16) ( CLDFB80_16_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_16_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2119,8 +2116,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_16_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_16_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2153,8 +2149,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = CLDFB80_20_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_20_SCALE );
                hs->scale = (Word16) ( CLDFB80_20_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_20_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2174,8 +2169,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_20_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_20_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2208,8 +2202,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_30_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_30_SCALE );
                hs->scale = (Word16) ( CLDFB80_30_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_30_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2229,8 +2222,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_30_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_30_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2263,8 +2255,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17050;
                hs->p_filter = CLDFB80_32_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_32_SCALE );
                hs->scale = (Word16) ( CLDFB80_32_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_32_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2284,8 +2275,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_32_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_32_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2318,8 +2308,7 @@ static void cldfb_init_proto_and_twiddles(
                hs->rot_vec_syn_delay_re_fx = NULL;
                hs->p_filter_sf = (Word16) 17051;
                hs->p_filter = CLDFB80_40_fx;
                hs->q_scale = norm_s( (Word16) CLDFB80_40_SCALE );
                hs->scale = (Word16) ( CLDFB80_40_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_40_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2339,8 +2328,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_40_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_40_SCALE_FX_Q8;
#endif
            }
            break;
@@ -2373,8 +2361,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( CLDFB80_60_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = CLDFB80_60_SCALE_FX_Q8;
#endif
            }
            else if ( hs->prototype == CLDFB_PROTOTYPE_5_00MS )
@@ -2394,8 +2381,7 @@ static void cldfb_init_proto_and_twiddles(
                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 );
                hs->scale = (Word16) ( LDQMF_60_SCALE * ( 1 << hs->q_scale ) );
                hs->scale = LDQMF_60_SCALE_FX_Q8;
#endif
            }
            break;
+14 −0
Original line number Diff line number Diff line
@@ -794,6 +794,13 @@ typedef enum
#define CLDFB80_32_SCALE                   88.303848f
#define CLDFB80_40_SCALE                   88.304726f
#define CLDFB80_60_SCALE                   88.028412f
#define CLDFB80_10_SCALE_FX_Q8             ( 22603 )
#define CLDFB80_16_SCALE_FX_Q8             ( 22605 )
#define CLDFB80_20_SCALE_FX_Q8             ( 22605 )
#define CLDFB80_30_SCALE_FX_Q8             ( 22588 )
#define CLDFB80_32_SCALE_FX_Q8             ( 22606 )
#define CLDFB80_40_SCALE_FX_Q8             ( 22606 )
#define CLDFB80_60_SCALE_FX_Q8             ( 22535 )

#define LDQMF_10_SCALE                      84.567841f
#define LDQMF_16_SCALE                      84.567932f
@@ -802,6 +809,13 @@ typedef enum
#define LDQMF_32_SCALE                      84.568001f
#define LDQMF_40_SCALE                      84.567986f
#define LDQMF_60_SCALE                      84.303284f
#define LDQMF_10_SCALE_FX_Q8                ( 21649 )
#define LDQMF_16_SCALE_FX_Q8                ( 21649 )
#define LDQMF_20_SCALE_FX_Q8                ( 21649 )
#define LDQMF_30_SCALE_FX_Q8                ( 21632 )
#define LDQMF_32_SCALE_FX_Q8                ( 21649 )
#define LDQMF_40_SCALE_FX_Q8                ( 21649 )
#define LDQMF_60_SCALE_FX_Q8                ( 21582 )

#define L_FFT                               256                     /* Spectral analysis - length of the FFT */
#define LOG2_L_FFT                          8                       /* Spectral analysis - log2 of L_FFT */
+2 −3
Original line number Diff line number Diff line
@@ -781,8 +781,7 @@ typedef struct cldfb_filter_bank_struct
    Word16 filtermode;

    float scale_flt;                                /* scaling of frequency domain */
    Word16 scale;
    Word16 q_scale;
    Word16 scale; /* scaling of frequency domain */ /* Q8 */

} CLDFB_FILTER_BANK, *HANDLE_CLDFB_FILTER_BANK;

+3 −3
Original line number Diff line number Diff line
@@ -3029,8 +3029,8 @@ void generate_masking_noise_dirac_ivas_fx(
        q_shift = norm_l( scale_fx );
        scale_fx = L_shl( scale_fx, q_shift );
        q_scale = add( q_scale, q_shift );
        scale_fx = Mpy_32_32( scale_fx, Mpy_32_16_1( L_mult( h_cldfb->scale, h_cldfb->scale ), CLDFB_SCALING ) ); // Q = q_scale + 2q -34
        q_scale = sub( add( q_scale, i_mult( 2, h_cldfb->q_scale ) ), 34 );
        scale_fx = Mpy_32_32( scale_fx, Mpy_32_16_1( L_mult( h_cldfb->scale, h_cldfb->scale ), CLDFB_SCALING ) ); // Q = q_scale + 2 * Q8 -34
        q_scale = sub( add( q_scale, 2 * Q8 ), 31 );
        ptr_level_fx = hFdCngCom->cngNoiseLevel + hFdCngCom->stopFFTbin - hFdCngCom->startBand;
        q_ptr_level = 31 - hFdCngCom->cngNoiseLevelExp;
        move16();
@@ -3043,7 +3043,7 @@ void generate_masking_noise_dirac_ivas_fx(
            scale_fx = L_shl( scale_fx, q_shift );
            q_scale = add( q_scale, q_shift );
            num = Mpy_32_32( scale_fx, *ptr_level_fx );
            q_num = sub( add( q_scale, q_ptr_level ), 30 );
            q_num = sub( add( q_scale, q_ptr_level ), 31 );
            exp = sub( 31, q_num );
            num = Sqrt32( num, &exp );
            /* Real part in CLDFB band */
+0 −6
Original line number Diff line number Diff line
@@ -141,12 +141,6 @@ ivas_error ivas_cpe_dec_fx(
            hCPE->hCoreCoder[ind1]->hHQ_core->q_old_outLB_fx = q_old_out_LB;
        }
    }
    // q_tcxltp_mem_in_float = 11;
    FOR( Word16 ind2 = 0; ind2 < 2; ind2++ )
    {
        IF( hCPE->hCoreCoder[ind2] && hCPE->hCoreCoder[ind2]->cldfbSyn )
        hCPE->hCoreCoder[ind2]->cldfbSyn->scale = (Word16) ( hCPE->hCoreCoder[ind2]->cldfbSyn->scale_flt * ( 1u << norm_s( (Word16) hCPE->hCoreCoder[0]->cldfbSyn->scale_flt ) ) );
    }
#endif // Float to fix conversions

    IF( ( error = stereo_memory_dec_fx( ivas_total_brate, hCPE, nb_bits_metadata, st_ivas->hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->nchan_transport ) ) != IVAS_ERR_OK )
Loading