diff options
Diffstat (limited to 'decoder/drc_src/impd_drc_filter_bank.h')
-rw-r--r-- | decoder/drc_src/impd_drc_filter_bank.h | 175 |
1 files changed, 80 insertions, 95 deletions
diff --git a/decoder/drc_src/impd_drc_filter_bank.h b/decoder/drc_src/impd_drc_filter_bank.h index d0bf66b..331f0b8 100644 --- a/decoder/drc_src/impd_drc_filter_bank.h +++ b/decoder/drc_src/impd_drc_filter_bank.h @@ -21,145 +21,130 @@ #define IMPD_DRC_FILTER_BANK_H #define FILTER_BANK_PARAMETER_COUNT 16 -#define CASCADE_ALLPASS_COUNT_MAX 9 -#define QMF_NUM_FILT_BANDS 64 -#define QMF_FILT_RESOLUTION 64 +#define CASCADE_ALLPASS_COUNT_MAX 9 +#define QMF_NUM_FILT_BANDS 64 +#define QMF_FILT_RESOLUTION 64 +typedef struct ia_drc_qmf_filt_struct { + FLOAT64* ana_buff; + FLOAT64* syn_buff; + FLOAT64 ana_tab_real[QMF_NUM_FILT_BANDS][2 * QMF_NUM_FILT_BANDS]; + FLOAT64 ana_tab_imag[QMF_NUM_FILT_BANDS][2 * QMF_NUM_FILT_BANDS]; + FLOAT64 syn_tab_real[2 * QMF_NUM_FILT_BANDS][QMF_NUM_FILT_BANDS]; + FLOAT64 syn_tab_imag[2 * QMF_NUM_FILT_BANDS][QMF_NUM_FILT_BANDS]; -typedef struct ia_drc_qmf_filt_struct -{ - -FLOAT64* ana_buff; -FLOAT64* syn_buff; -FLOAT64 ana_tab_real[QMF_NUM_FILT_BANDS][2*QMF_NUM_FILT_BANDS]; -FLOAT64 ana_tab_imag[QMF_NUM_FILT_BANDS][2*QMF_NUM_FILT_BANDS]; -FLOAT64 syn_tab_real[2*QMF_NUM_FILT_BANDS][QMF_NUM_FILT_BANDS]; -FLOAT64 syn_tab_imag[2*QMF_NUM_FILT_BANDS][QMF_NUM_FILT_BANDS]; - -}ia_drc_qmf_filt_struct; +} ia_drc_qmf_filt_struct; typedef struct { - FLOAT32 f_cross_norm; - FLOAT32 gamma; - FLOAT32 delta; + FLOAT32 f_cross_norm; + FLOAT32 gamma; + FLOAT32 delta; } ia_filter_bank_params_struct; - typedef struct { - FLOAT32 s00; - FLOAT32 s01; - FLOAT32 s10; - FLOAT32 s11; + FLOAT32 s00; + FLOAT32 s01; + FLOAT32 s10; + FLOAT32 s11; } ia_lr_filter_state_struct; - typedef struct { - FLOAT32 s0; - FLOAT32 s1; + FLOAT32 s0; + FLOAT32 s1; } ia_all_pass_filter_state_struct; typedef struct { - FLOAT32 a0; - FLOAT32 a1; - FLOAT32 a2; - FLOAT32 b0; - FLOAT32 b1; - FLOAT32 b2; - FLOAT32 x_p[MAX_CHANNEL_COUNT*2]; - FLOAT32 y_p[MAX_CHANNEL_COUNT*2]; + FLOAT32 a0; + FLOAT32 a1; + FLOAT32 a2; + FLOAT32 b0; + FLOAT32 b1; + FLOAT32 b2; + FLOAT32 x_p[MAX_CHANNEL_COUNT * 2]; + FLOAT32 y_p[MAX_CHANNEL_COUNT * 2]; } ia_iir_filter_struct; typedef struct { - ia_iir_filter_struct low_pass; - ia_iir_filter_struct high_pass; + ia_iir_filter_struct low_pass; + ia_iir_filter_struct high_pass; } ia_two_band_filt_struct; typedef struct { - ia_iir_filter_struct str_low_pass_stage_1; - ia_iir_filter_struct str_high_pass_stage_1; - ia_iir_filter_struct str_low_pass_stage_2; - ia_iir_filter_struct str_high_pass_stage_2; - ia_iir_filter_struct str_all_pass_stage_2; + ia_iir_filter_struct str_low_pass_stage_1; + ia_iir_filter_struct str_high_pass_stage_1; + ia_iir_filter_struct str_low_pass_stage_2; + ia_iir_filter_struct str_high_pass_stage_2; + ia_iir_filter_struct str_all_pass_stage_2; } ia_three_band_filt_struct; typedef struct { - ia_iir_filter_struct str_low_pass_stage_1; - ia_iir_filter_struct str_high_pass_stage_1; - ia_iir_filter_struct str_all_pass_stage_2_high; - ia_iir_filter_struct str_all_pass_stage_2_low; - ia_iir_filter_struct str_low_pass_stage_3_high; - ia_iir_filter_struct str_high_pass_stage_3_high; - ia_iir_filter_struct str_low_pass_stage_3_low; - ia_iir_filter_struct str_high_pass_stage_3_low; + ia_iir_filter_struct str_low_pass_stage_1; + ia_iir_filter_struct str_high_pass_stage_1; + ia_iir_filter_struct str_all_pass_stage_2_high; + ia_iir_filter_struct str_all_pass_stage_2_low; + ia_iir_filter_struct str_low_pass_stage_3_high; + ia_iir_filter_struct str_high_pass_stage_3_high; + ia_iir_filter_struct str_low_pass_stage_3_low; + ia_iir_filter_struct str_high_pass_stage_3_low; } ia_four_band_filt_struct; typedef struct { - ia_iir_filter_struct str_all_pass_stage; -} ia_all_pass_filter_sturct; + ia_iir_filter_struct str_all_pass_stage; +} ia_all_pass_filter_sturct; typedef struct { - ia_all_pass_filter_sturct str_all_pass_cascade_filter[CASCADE_ALLPASS_COUNT_MAX]; - WORD32 num_filter; -} ia_all_pass_cascade_struct; + ia_all_pass_filter_sturct + str_all_pass_cascade_filter[CASCADE_ALLPASS_COUNT_MAX]; + WORD32 num_filter; +} ia_all_pass_cascade_struct; typedef struct { - WORD32 num_bands; - WORD32 complexity; - ia_two_band_filt_struct str_two_band_bank; - ia_three_band_filt_struct str_three_band_bank; - ia_four_band_filt_struct str_four_band_bank; - ia_all_pass_cascade_struct str_all_pass_cascade; + WORD32 num_bands; + WORD32 complexity; + ia_two_band_filt_struct str_two_band_bank; + ia_three_band_filt_struct str_three_band_bank; + ia_four_band_filt_struct str_four_band_bank; + ia_all_pass_cascade_struct str_all_pass_cascade; } ia_drc_filter_bank_struct; typedef struct { - WORD32 nfilter_banks; - WORD32 num_ph_align_ch_groups; - WORD32 complexity; - ia_drc_filter_bank_struct str_drc_filter_bank[8]; + WORD32 nfilter_banks; + WORD32 num_ph_align_ch_groups; + WORD32 complexity; + ia_drc_filter_bank_struct str_drc_filter_bank[8]; } ia_filter_banks_struct; - WORD32 -impd_init_all_filter_banks( ia_uni_drc_coeffs_struct* str_p_loc_drc_coefficients_uni_drc, - ia_drc_instructions_struct* str_drc_instruction_str, - ia_filter_banks_struct* ia_filter_banks_struct); +impd_init_all_filter_banks( + ia_uni_drc_coeffs_struct* str_p_loc_drc_coefficients_uni_drc, + ia_drc_instructions_struct* str_drc_instruction_str, + ia_filter_banks_struct* ia_filter_banks_struct); VOID impd_two_band_filter_process(ia_two_band_filt_struct* str_two_band_bank, - WORD32 c, - WORD32 size, - FLOAT32* audio_in, - FLOAT32* audio_out[]); + WORD32 c, WORD32 size, FLOAT32* audio_in, + FLOAT32* audio_out[]); -VOID impd_three_band_filter_process(ia_three_band_filt_struct* str_three_band_bank, - WORD32 c, - WORD32 size, - FLOAT32* audio_in, - FLOAT32* audio_out[]); +VOID impd_three_band_filter_process( + ia_three_band_filt_struct* str_three_band_bank, WORD32 c, WORD32 size, + FLOAT32* audio_in, FLOAT32* audio_out[]); VOID impd_four_band_filter_process(ia_four_band_filt_struct* str_four_band_bank, - WORD32 c, - WORD32 size, - FLOAT32* audio_in, - FLOAT32* audio_out[]); + WORD32 c, WORD32 size, FLOAT32* audio_in, + FLOAT32* audio_out[]); -VOID impd_all_pass_cascade_process(ia_all_pass_cascade_struct *str_all_pass_cascade, - WORD32 c, - WORD32 size, - FLOAT32* audio_in); +VOID impd_all_pass_cascade_process( + ia_all_pass_cascade_struct* str_all_pass_cascade, WORD32 c, WORD32 size, + FLOAT32* audio_in); WORD32 -impd_shape_filt_block_init(ia_shape_filter_block_params_struct* pstr_shape_filter_block_params, - shape_filter_block* shape_filter_block); +impd_shape_filt_block_init( + ia_shape_filter_block_params_struct* pstr_shape_filter_block_params, + shape_filter_block* shape_filter_block); WORD32 impd_shape_filt_block_adapt(const FLOAT32 drc_gain, - shape_filter_block* shape_filter_block); - - + shape_filter_block* shape_filter_block); -WORD32 impd_shape_filt_block_time_process(shape_filter_block* shape_filter_block, - FLOAT32* drc_gain, - const WORD32 channel, - FLOAT32 *audio_in, - WORD32 start, - WORD32 end); +WORD32 impd_shape_filt_block_time_process( + shape_filter_block* shape_filter_block, FLOAT32* drc_gain, + const WORD32 channel, FLOAT32* audio_in, WORD32 start, WORD32 end); #endif |