aboutsummaryrefslogtreecommitdiff
path: root/decoder/drc_src/impd_drc_uni_sel_proc_drc_set_sel.h
blob: 7b31d5a95c97b761cdf04ee86427f326eadf7eca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/******************************************************************************
 *
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
#ifndef IMPD_DRC_UNI_SEL_PROC_DRC_SET_SEL_H
#define IMPD_DRC_UNI_SEL_PROC_DRC_SET_SEL_H

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */


#define SELECTION_FLAG_DRC_TARGET_LOUDNESS_MATCH        (1<<0)
#define SELECTION_FLAG_EXPLICIT_PEAK_INFO_PRESENT       (1<<1)

typedef struct {
    WORD32 drc_instructions_index;
    WORD32 downmix_id_request_index;
    WORD32 eq_set_id;
    FLOAT32 output_peak_level;
    FLOAT32 loudness_norm_db_gain_adjusted;
    FLOAT32 output_loudness;
    FLOAT32 mixing_level;
    WORD32 selection_flags;
} ia_selection_candidate_info_struct;


WORD32
impd_validate_requested_drc_feature(ia_drc_sel_proc_params_struct* pstr_drc_sel_proc_params_struct);

WORD32
impd_map_requested_effect_bit_idx(WORD32 requested_effect_type,
                             WORD32* effect_bit_idx);

WORD32
impd_get_fading_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc);

WORD32
impd_get_ducking_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc);

WORD32
impd_get_selected_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc,
                  WORD32 drc_set_id_selected);

WORD32
impd_get_dependent_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc);

WORD32
impd_get_dependent_drc_instructions(const ia_drc_config* drc_config,
                            const ia_drc_instructions_struct* str_drc_instruction_str,
                            ia_drc_instructions_struct** ppstr_drc_instructions_dependent);


WORD32
impd_select_drcs_without_compr_effects (ia_drc_config* pstr_drc_config,
                                     WORD32* match_found_flag,
                                     WORD32* selection_candidate_count,
                                     ia_selection_candidate_info_struct* selection_candidate_info);

WORD32
impd_match_effect_type_attempt(ia_drc_config* pstr_drc_config,
                       WORD32 requested_effect_type,
                       WORD32 stateRequested,
                       WORD32* match_found_flag,
                       WORD32* selection_candidate_count,
                       ia_selection_candidate_info_struct* selection_candidate_info);

WORD32
impd_match_effect_types(ia_drc_config* pstr_drc_config,
                 WORD32 total_effect_type_requested,
                 WORD32 desired_effect_type_requested,
                 WORD32* requested_effect_type,
                 WORD32* selection_candidate_count,
                 ia_selection_candidate_info_struct* selection_candidate_info);

WORD32 impd_match_dynamic_range(ia_drc_config* pstr_drc_config,
                  ia_drc_loudness_info_set_struct* pstr_loudness_info,
                  ia_drc_sel_proc_params_struct* pstr_drc_sel_proc_params_struct,
                  WORD32 num_drc_requests,
                  WORD32* selection_candidate_count,
                  ia_selection_candidate_info_struct* selection_candidate_info);

WORD32
impd_match_drc_characteristic_attempt(ia_drc_config* pstr_drc_config,
                              WORD32 requested_drc_characteristic,
                              WORD32* match_found_flag,
                              WORD32* selection_candidate_count,
                              ia_selection_candidate_info_struct* selection_candidate_info);

WORD32
impd_match_drc_characteristic(ia_drc_config* pstr_drc_config,
                       WORD32 requested_drc_characteristic,
                       WORD32* selection_candidate_count,
                       ia_selection_candidate_info_struct* selection_candidate_info);

VOID impd_select_drc_coeff3(ia_drc_config* drc_config,
                       ia_uni_drc_coeffs_struct** str_p_loc_drc_coefficients_uni_drc);

WORD32
impd_drc_set_preselection(ia_drc_sel_proc_params_struct* pstr_drc_sel_proc_params_struct,
                   ia_drc_config* pstr_drc_config,
                   ia_drc_loudness_info_set_struct* pstr_loudness_info,
                   WORD32 restrict_to_drc_with_album_loudness,
                   WORD32* selection_candidate_count,
                   ia_selection_candidate_info_struct* selection_candidate_info);

WORD32 impd_drc_set_final_selection(ia_drc_config* pstr_drc_config,
                     ia_drc_sel_proc_params_struct* pstr_drc_sel_proc_params_struct,
                     WORD32* selection_candidate_count,
                     ia_selection_candidate_info_struct* selection_candidate_info
);

WORD32 impd_match_eq_set_purpose(ia_drc_config* drc_config,
                  WORD32 eq_set_purpose_requested,
                  WORD32* eq_set_id_valid_flag,
                  WORD32* selection_candidate_count,
                  ia_selection_candidate_info_struct* selection_candidate_info,
                  ia_selection_candidate_info_struct* selection_candidate_info_step_2
                  );

WORD32
impd_select_drc_set(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc,
             WORD32* drc_set_id_selected
            );

#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif