impd_drc_selection_process_init.c revision 4908247643e9e97852e847c00bfe7c4259279538
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#include <stdio.h> 21#include <stdlib.h> 22#include <string.h> 23#include "impd_type_def.h" 24#include "impd_drc_extr_delta_coded_info.h" 25#include "impd_drc_common.h" 26#include "impd_drc_struct.h" 27#include "impd_drc_interface.h" 28#include "impd_drc_selection_process.h" 29 30WORD32 impd_drc_sel_proc_init_dflt(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc) 31{ 32 if (pstr_drc_uni_sel_proc != NULL) { 33 34 pstr_drc_uni_sel_proc->first_frame = 0; 35 36 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.base_channel_count = -1; 37 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.base_layout = -1; 38 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_config_request_type = 0; 39 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_downmix_id_requests = 0; 40 41 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.album_mode = 0; 42 43 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.peak_limiter = 0; 44 45 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_normalization_on = 0; 46 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_loudness = -24.0f; 47 48 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_deviation_max = LOUDNESS_DEVIATION_MAX_DEFAULT; 49 50 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_method = USER_METHOD_DEFINITION_DEFAULT; 51 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_system = USER_MEASUREMENT_SYSTEM_DEFAULT; 52 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_pre_proc = USER_LOUDNESS_PREPROCESSING_DEFAULT; 53 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.device_cut_off_frequency = 500; 54 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_db_max = LOUDNESS_NORMALIZATION_GAIN_MAX_DEFAULT; 55 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_modification_db = 0.0f; 56 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.output_peak_level_max = 0.0f; 57 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.peak_limiter == 1) { 58 59 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.output_peak_level_max = 6.0f; 60 61 } 62 63 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.dynamic_range_control_on = 1; 64 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_bands_supported = 4; 65 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_drc_feature_requests = 0; 66 67 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.boost = 1.f; 68 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.compress = 1.f; 69 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_characteristic_target = 0; 70 71 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_eq_request = LOUD_EQ_REQUEST_OFF; 72 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.eq_set_purpose_request = EQ_PURPOSE_EQ_OFF; 73 pstr_drc_uni_sel_proc->compl_level_supported_total = COMPLEXITY_LEVEL_SUPPORTED_TOTAL; 74 75 pstr_drc_uni_sel_proc->drc_inst_index_sel = -1; 76 pstr_drc_uni_sel_proc->drc_coef_index_sel = -1; 77 pstr_drc_uni_sel_proc->downmix_inst_index_sel = -1; 78 pstr_drc_uni_sel_proc->drc_instructions_index[0] = -1; 79 pstr_drc_uni_sel_proc->drc_instructions_index[1] = -1; 80 pstr_drc_uni_sel_proc->drc_instructions_index[2] = -1; 81 pstr_drc_uni_sel_proc->drc_instructions_index[3] = -1; 82 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.output_peak_level_db = 0; 83 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.loudness_normalization_gain_db = 0; 84 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.output_loudness = UNDEFINED_LOUDNESS_VALUE; 85 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.num_sel_drc_sets = 0; 86 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.active_downmix_id = 0; 87 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.base_channel_count = 0; 88 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.target_channel_count = 0; 89 pstr_drc_uni_sel_proc->uni_drc_sel_proc_output.downmix_matrix_present = 0; 90 91 pstr_drc_uni_sel_proc->eq_inst_index[0] = -1; 92 pstr_drc_uni_sel_proc->eq_inst_index[1] = -1; 93 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 94 } else { 95 return 1; 96 } 97 98 return 0; 99} 100WORD32 101impd_drc_sel_proc_init_sel_proc_params(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc, 102 ia_drc_sel_proc_params_struct* pstr_drc_sel_proc_params_struct) 103{ 104 105 if (pstr_drc_uni_sel_proc != NULL && pstr_drc_sel_proc_params_struct != NULL) { 106 107 if ( memcmp ( &pstr_drc_uni_sel_proc->uni_drc_sel_proc_params, pstr_drc_sel_proc_params_struct, sizeof(ia_drc_sel_proc_params_struct) )) 108 { 109 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params = *pstr_drc_sel_proc_params_struct; 110 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 111 } 112 } 113 114 return 0; 115} 116WORD32 117impd_drc_sel_proc_init_interface_params(ia_drc_sel_pro_struct* pstr_drc_uni_sel_proc, 118 ia_drc_interface_struct* pstr_drc_interface) 119{ 120 WORD32 i,j; 121 122 if (pstr_drc_uni_sel_proc != NULL && pstr_drc_interface != NULL) { 123 124 if (pstr_drc_interface->system_interface_flag) { 125 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_config_request_type != pstr_drc_interface->system_interface.target_config_request_type) { 126 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_config_request_type = pstr_drc_interface->system_interface.target_config_request_type; 127 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 128 } 129 switch (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_config_request_type) { 130 case 0: 131 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_downmix_id_requests != pstr_drc_interface->system_interface.num_downmix_id_requests) { 132 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_downmix_id_requests = pstr_drc_interface->system_interface.num_downmix_id_requests; 133 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 134 } 135 for (i=0; i<pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_downmix_id_requests; i++) { 136 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dwnmix_id[i] != pstr_drc_interface->system_interface.requested_dwnmix_id[i]) { 137 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dwnmix_id[i] = pstr_drc_interface->system_interface.requested_dwnmix_id[i]; 138 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 139 } 140 } 141 break; 142 case 1: 143 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_target_layout != pstr_drc_interface->system_interface.requested_target_layout) { 144 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_target_layout = pstr_drc_interface->system_interface.requested_target_layout; 145 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 146 } 147 break; 148 case 2: 149 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_target_ch_count != pstr_drc_interface->system_interface.requested_target_ch_count) { 150 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_target_ch_count = pstr_drc_interface->system_interface.requested_target_ch_count; 151 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 152 } 153 break; 154 } 155 } 156 if (pstr_drc_interface->loudness_norm_ctrl_interface_flag) { 157 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_normalization_on != pstr_drc_interface->loudness_norm_ctrl_interface.loudness_normalization_on) { 158 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_normalization_on = pstr_drc_interface->loudness_norm_ctrl_interface.loudness_normalization_on; 159 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 160 } 161 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_normalization_on) { 162 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_loudness != pstr_drc_interface->loudness_norm_ctrl_interface.target_loudness) { 163 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.target_loudness = pstr_drc_interface->loudness_norm_ctrl_interface.target_loudness; 164 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 165 } 166 } 167 } 168 if (pstr_drc_interface->loudness_norm_parameter_interface_flag) { 169 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.album_mode != pstr_drc_interface->loudness_norm_param_interface.album_mode) { 170 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.album_mode = pstr_drc_interface->loudness_norm_param_interface.album_mode; 171 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 172 } 173 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.peak_limiter != pstr_drc_interface->loudness_norm_param_interface.peak_limiter) { 174 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.peak_limiter = pstr_drc_interface->loudness_norm_param_interface.peak_limiter; 175 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 176 } 177 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_deviation_max) { 178 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_deviation_max != pstr_drc_interface->loudness_norm_param_interface.loudness_deviation_max) { 179 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_deviation_max = pstr_drc_interface->loudness_norm_param_interface.loudness_deviation_max; 180 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 181 } 182 } 183 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_measur_method) { 184 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_method != pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_method) { 185 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_method = pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_method; 186 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 187 } 188 } 189 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_measur_pre_proc) { 190 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_pre_proc != pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_pre_proc) { 191 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_pre_proc = pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_pre_proc; 192 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 193 } 194 } 195 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_measur_system) { 196 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_system != pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_system) { 197 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_measurement_system = pstr_drc_interface->loudness_norm_param_interface.loudness_measurement_system; 198 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 199 } 200 } 201 if (pstr_drc_interface->loudness_norm_param_interface.change_device_cut_off_freq) { 202 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.device_cut_off_frequency != pstr_drc_interface->loudness_norm_param_interface.device_cut_off_frequency) { 203 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.device_cut_off_frequency = pstr_drc_interface->loudness_norm_param_interface.device_cut_off_frequency; 204 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 205 } 206 } 207 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_norm_gain_db_max) { 208 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_db_max != pstr_drc_interface->loudness_norm_param_interface.loudness_norm_gain_db_max) { 209 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_db_max = pstr_drc_interface->loudness_norm_param_interface.loudness_norm_gain_db_max; 210 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 211 } 212 } 213 if (pstr_drc_interface->loudness_norm_param_interface.change_loudness_norm_gain_modification_db ) { 214 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_modification_db != pstr_drc_interface->loudness_norm_param_interface.loudness_norm_gain_modification_db) { 215 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_norm_gain_modification_db = pstr_drc_interface->loudness_norm_param_interface.loudness_norm_gain_modification_db; 216 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 217 } 218 } 219 if (pstr_drc_interface->loudness_norm_param_interface.change_output_peak_level_max) { 220 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.output_peak_level_max != pstr_drc_interface->loudness_norm_param_interface.output_peak_level_max) { 221 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.output_peak_level_max = pstr_drc_interface->loudness_norm_param_interface.output_peak_level_max; 222 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 223 } 224 } 225 } 226 if (pstr_drc_interface->drc_interface_flag) { 227 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.dynamic_range_control_on != pstr_drc_interface->drc_ctrl_interface.dynamic_range_control_on) { 228 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.dynamic_range_control_on = pstr_drc_interface->drc_ctrl_interface.dynamic_range_control_on; 229 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 230 if (!pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.dynamic_range_control_on) { 231 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_drc_feature_requests = 0; 232 } 233 } 234 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.dynamic_range_control_on) { 235 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_drc_feature_requests != pstr_drc_interface->drc_ctrl_interface.num_drc_feature_requests) { 236 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_drc_feature_requests = pstr_drc_interface->drc_ctrl_interface.num_drc_feature_requests; 237 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 238 } 239 for (i=0; i<pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.num_drc_feature_requests; i++) { 240 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_feature_req_type[i] != pstr_drc_interface->drc_ctrl_interface.drc_feature_req_type[i]) { 241 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_feature_req_type[i] = pstr_drc_interface->drc_ctrl_interface.drc_feature_req_type[i]; 242 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 243 } 244 switch (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_feature_req_type[i]) { 245 case 0: 246 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_num_drc_effects[i] != pstr_drc_interface->drc_ctrl_interface.requested_num_drc_effects[i]) { 247 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_num_drc_effects[i] = pstr_drc_interface->drc_ctrl_interface.requested_num_drc_effects[i]; 248 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 249 } 250 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.desired_num_drc_effects_of_requested[i] != pstr_drc_interface->drc_ctrl_interface.desired_num_drc_effects_of_requested[i]) { 251 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.desired_num_drc_effects_of_requested[i] = pstr_drc_interface->drc_ctrl_interface.desired_num_drc_effects_of_requested[i]; 252 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 253 } 254 for (j=0; j<pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_num_drc_effects[i]; j++) { 255 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_drc_effect_type[i][j] != pstr_drc_interface->drc_ctrl_interface.requested_drc_effect_type[i][j]) { 256 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_drc_effect_type[i][j] = pstr_drc_interface->drc_ctrl_interface.requested_drc_effect_type[i][j]; 257 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 258 } 259 } 260 break; 261 case 1: 262 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_measur_type[i] != pstr_drc_interface->drc_ctrl_interface.requested_dyn_rng_measurement_type[i]) { 263 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_measur_type[i] = pstr_drc_interface->drc_ctrl_interface.requested_dyn_rng_measurement_type[i]; 264 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 265 } 266 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_range_flag[i] != pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_is_single_val_flag[i]) { 267 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_range_flag[i] = pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_is_single_val_flag[i]; 268 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 269 } 270 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_range_flag[i] == 0) { 271 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_value[i] != pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_value[i]) { 272 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_value[i] = pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_value[i]; 273 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 274 } 275 } else { 276 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_min_val[i] != pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_min_val[i]) { 277 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_min_val[i] = pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_min_val[i]; 278 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 279 } 280 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_max_val[i] != pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_max_val[i]) { 281 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_dyn_range_max_val[i] = pstr_drc_interface->drc_ctrl_interface.requested_dyn_range_max_val[i]; 282 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 283 } 284 } 285 break; 286 case 2: 287 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_drc_characteristic[i] != pstr_drc_interface->drc_ctrl_interface.requested_drc_characteristic[i]) { 288 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.requested_drc_characteristic[i] = pstr_drc_interface->drc_ctrl_interface.requested_drc_characteristic[i]; 289 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 290 } 291 break; 292 } 293 } 294 } 295 } 296 if (pstr_drc_interface->drc_parameter_interface_flag) { 297 if (pstr_drc_interface->drc_parameter_interface.change_compress) { 298 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.compress != pstr_drc_interface->drc_parameter_interface.compress) { 299 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.compress = pstr_drc_interface->drc_parameter_interface.compress; 300 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 301 } 302 } 303 if (pstr_drc_interface->drc_parameter_interface.change_boost) { 304 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.boost != pstr_drc_interface->drc_parameter_interface.boost) { 305 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.boost = pstr_drc_interface->drc_parameter_interface.boost; 306 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 307 } 308 } 309 if (pstr_drc_interface->drc_parameter_interface.change_drc_characteristic_target) { 310 if (pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_characteristic_target != pstr_drc_interface->drc_parameter_interface.drc_characteristic_target) { 311 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.drc_characteristic_target = pstr_drc_interface->drc_parameter_interface.drc_characteristic_target; 312 pstr_drc_uni_sel_proc->sel_proc_request_flag = 1; 313 } 314 } 315 } 316 if (pstr_drc_interface->drc_uni_interface_ext_flag) { 317 ia_drc_uni_interface_ext_struct* drc_uni_interface_ext = &pstr_drc_interface->drc_uni_interface_ext; 318 if (drc_uni_interface_ext->loudness_eq_parameter_interface_flag) { 319 ia_loudness_eq_parameter_interface_struct* loudness_eq_parameter_interface = &drc_uni_interface_ext->loudness_eq_parameter_interface; 320 if (loudness_eq_parameter_interface->loudness_eq_request_flag) { 321 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.loudness_eq_request = loudness_eq_parameter_interface->loudness_eq_request; 322 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.sensitivity = loudness_eq_parameter_interface->sensitivity; 323 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.playback_gain = loudness_eq_parameter_interface->playback_gain; 324 } 325 } 326 if (drc_uni_interface_ext->eq_ctrl_interface_flag) { 327 pstr_drc_uni_sel_proc->uni_drc_sel_proc_params.eq_set_purpose_request = drc_uni_interface_ext->eq_ctrl_interface.eq_set_purpose_request; 328 } 329 } 330 } 331 332 return 0; 333} 334 335 336 337