impd_drc_process_audio.h revision 51aa06e124ba688ca810b25ee0b5bb66678aac14
1/******************************************************************************
2 *
3 * Copyright (C) 2018 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *****************************************************************************
18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
20#ifndef IMPD_DRC_PROCESS_AUDIO_H
21#define IMPD_DRC_PROCESS_AUDIO_H
22
23#ifdef __cplusplus
24extern "C"
25{
26#endif
27
28typedef struct {
29    WORD32 multiband_audio_sig_count;
30    WORD32 frame_size;
31    FLOAT32** non_interleaved_audio;
32} ia_audio_band_buffer_struct;
33
34typedef struct {
35    WORD32 audio_num_chan;
36    WORD32 frame_size;
37    WORD32 audio_sub_band_count;
38    WORD32 audio_sub_band_frame_size;
39    WORD32 audio_delay_samples;
40    WORD32 audio_delay_sub_band_samples;
41    FLOAT32** audio_io_buffer_delayed;
42    FLOAT32** audio_buffer_delayed_real;
43    FLOAT32** audio_buffer_delayed_imag;
44    FLOAT32** audio_in_out_buf;
45    FLOAT32** audio_real_buff;
46    FLOAT32** audio_imag_buff;
47} ia_audio_in_out_buf;
48
49
50WORD32
51impd_apply_gains_subband(ia_drc_instructions_struct* pstr_drc_instruction_arr,
52           const WORD32 drc_instructions_index,
53           ia_drc_params_struct* ia_drc_params_struct,
54           ia_gain_buffer_struct* pstr_gain_buf,
55           ia_overlap_params_struct* pstr_overlap_params,
56           FLOAT32* deinterleaved_audio_delayed_re[],
57           FLOAT32* deinterleaved_audio_delayed_im[],
58           FLOAT32* deinterleaved_audio_re[],
59           FLOAT32* deinterleaved_audio_im[]);
60
61
62WORD32
63impd_filter_banks_process(ia_drc_instructions_struct* pstr_drc_instruction_arr,
64                 const WORD32 drc_instructions_index,
65                 ia_drc_params_struct* ia_drc_params_struct,
66                 FLOAT32* audio_io_buf[],
67                 ia_audio_band_buffer_struct* audio_band_buffer,
68                 ia_filter_banks_struct* ia_filter_banks_struct,
69                 const WORD32 passThru);
70
71WORD32
72impd_store_audio_io_buffer_time(FLOAT32*         audio_in_out_buf[],
73                       ia_audio_in_out_buf* audio_io_buf_internal);
74
75WORD32
76impd_store_audio_io_buffer_freq(FLOAT32*         audio_real_buff[],
77                       FLOAT32*         audio_imag_buff[],
78                       ia_audio_in_out_buf* audio_io_buf_internal);
79
80WORD32
81impd_retrieve_audio_io_buffer_time(FLOAT32*         audio_in_out_buf[],
82                          ia_audio_in_out_buf* audio_io_buf_internal);
83
84WORD32
85impd_retrieve_audio_buffer_freq(FLOAT32*         audio_real_buff[],
86                          FLOAT32*         audio_imag_buff[],
87                          ia_audio_in_out_buf* audio_io_buf_internal);
88
89WORD32
90impd_advance_audio_io_buffer_time(ia_audio_in_out_buf* audio_io_buf_internal);
91
92WORD32
93impd_advance_audio_buff_freq(ia_audio_in_out_buf* audio_io_buf_internal);
94
95#ifdef __cplusplus
96}
97#endif
98#endif
99