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_PARSER_H
21#define IMPD_DRC_PARSER_H
22
23WORD32
24impd_dec_ducking_scaling(ia_bit_buf_struct* it_bit_buff,
25                         WORD32* ducking_scaling_flag,
26                         FLOAT32* ducking_scaling);
27
28WORD32
29impd_parse_loudness_info(ia_bit_buf_struct* it_bit_buff, WORD32 version,
30                         ia_loudness_info_struct* loudness_info);
31
32WORD32
33impd_parse_loudness_info_set_ext(
34    ia_bit_buf_struct* it_bit_buff,
35    ia_drc_loudness_info_set_struct* loudness_info_set);
36
37WORD32
38impd_sel_drc_coeff(
39    ia_drc_config* drc_config, WORD32 location,
40    ia_uni_drc_coeffs_struct** str_p_loc_drc_coefficients_uni_drc);
41
42WORD32
43impd_drc_parse_instructions_basic(
44    ia_bit_buf_struct* it_bit_buff,
45    ia_drc_instructions_basic_struct* str_drc_instructions_basic);
46
47WORD32
48impd_parse_drc_instructions_uni_drc(
49    ia_bit_buf_struct* it_bit_buff, WORD32 version, ia_drc_config* drc_config,
50    ia_drc_instructions_struct* str_drc_instruction_str);
51
52WORD32
53impd_parse_gain_set_params(ia_bit_buf_struct* it_bit_buff, WORD32 version,
54                           WORD32* gain_seq_idx,
55                           ia_gain_set_params_struct* gain_set_params);
56
57WORD32
58impd_drc_parse_coeff(
59    ia_bit_buf_struct* it_bit_buff, WORD32 version,
60    ia_drc_params_bs_dec_struct* ia_drc_params_struct,
61    ia_uni_drc_coeffs_struct* str_p_loc_drc_coefficients_uni_drc);
62
63WORD32
64impd_parse_dwnmix_instructions(
65    ia_bit_buf_struct* it_bit_buff, WORD32 version,
66    ia_drc_params_bs_dec_struct* ia_drc_params_struct,
67    ia_channel_layout_struct* channel_layout,
68    ia_downmix_instructions_struct* dwnmix_instructions);
69
70WORD32
71impd_parse_drc_ext_v1(ia_bit_buf_struct* it_bit_buff,
72                      ia_drc_params_bs_dec_struct* ia_drc_params_struct,
73                      ia_drc_config* drc_config,
74                      ia_drc_config_ext* str_drc_config_ext);
75
76WORD32
77impd_parse_drc_config(ia_bit_buf_struct* it_bit_buff,
78                      ia_drc_params_bs_dec_struct* ia_drc_params_struct,
79                      ia_drc_config* drc_config);
80
81WORD32
82impd_parse_loudness_info_set(
83    ia_bit_buf_struct* it_bit_buff,
84    ia_drc_loudness_info_set_struct* loudness_info_set);
85
86WORD32
87impd_parse_drc_gain_sequence(ia_bit_buf_struct* it_bit_buff,
88                             ia_drc_bits_dec_struct* pstr_drc_uni_bs_dec,
89                             ia_gain_set_params_struct* gain_set_params,
90                             ia_drc_gain_sequence_struct* drc_gain_sequence);
91
92WORD32
93impd_parse_uni_drc_gain_ext(ia_bit_buf_struct* it_bit_buff,
94                            ia_uni_drc_gain_ext_struct* uni_drc_gain_ext);
95
96WORD32 impd_drc_uni_gain_read(ia_bit_buf_struct* it_bit_buff,
97                              ia_drc_bits_dec_struct* pstr_drc_uni_bs_dec,
98                              ia_drc_config* drc_config,
99                              ia_drc_gain_struct* pstr_uni_drc_gain);
100
101#endif
102