Formatting .c and .h files using clang-format Formatting .s files Bug: 80493357 Test: compare object sizes Change-Id: I38296083c9d2d566a6a2564db2e391e4b2bd43a9
169 lines
5.6 KiB
C
169 lines
5.6 KiB
C
/******************************************************************************
|
|
*
|
|
* 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
|
|
*/
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
#include <string.h>
|
|
#include "impd_type_def.h"
|
|
#include "impd_drc_uni_tables.h"
|
|
#include "impd_drc_uni_common.h"
|
|
#include "impd_drc_uni_interface.h"
|
|
#include "impd_drc_struct.h"
|
|
#include "impd_drc_uni_gain_dec.h"
|
|
#include "impd_drc_uni_loud_eq.h"
|
|
#include "impd_parametric_drc_dec.h"
|
|
#include "impd_drc_uni_multi_band.h"
|
|
#include "impd_drc_filter_bank.h"
|
|
#include "impd_drc_uni_process_audio.h"
|
|
#include "impd_drc_rom.h"
|
|
|
|
WORD32 impd_parametric_drc_instance_reset(
|
|
WORD32 instance_idx, ia_parametric_drc_instance_params_struct*
|
|
pstr_parametric_drc_instance_params) {
|
|
WORD32 err = 0;
|
|
|
|
if (pstr_parametric_drc_instance_params->parametric_drc_type ==
|
|
PARAM_DRC_TYPE_FF) {
|
|
ia_parametric_drc_type_ff_params_struct*
|
|
pstr_parametric_ffwd_type_drc_params =
|
|
&(pstr_parametric_drc_instance_params
|
|
->str_parametric_drc_type_ff_params);
|
|
err = impd_parametric_ffwd_type_drc_reset(
|
|
pstr_parametric_ffwd_type_drc_params);
|
|
if (err) return (err);
|
|
|
|
} else {
|
|
return (UNEXPECTED_ERROR);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
WORD32 impd_add_drc_band_audio(
|
|
ia_drc_instructions_struct* pstr_drc_instruction_arr,
|
|
const WORD32 drc_instructions_index,
|
|
ia_drc_params_struct* ia_drc_params_struct,
|
|
ia_audio_band_buffer_struct* audio_band_buffer, FLOAT32* audio_io_buf[]) {
|
|
WORD32 g, b, i, c;
|
|
FLOAT32 sum;
|
|
WORD32 signalIndex = 0;
|
|
FLOAT32** drcBandAudio;
|
|
FLOAT32** channel_audio;
|
|
ia_drc_instructions_struct* str_drc_instruction_str;
|
|
|
|
drcBandAudio = audio_band_buffer->non_interleaved_audio;
|
|
channel_audio = audio_io_buf;
|
|
|
|
if (drc_instructions_index >= 0) {
|
|
str_drc_instruction_str =
|
|
&(pstr_drc_instruction_arr[drc_instructions_index]);
|
|
} else {
|
|
return -1;
|
|
}
|
|
|
|
if (str_drc_instruction_str->drc_set_id > 0) {
|
|
for (c = 0; c < str_drc_instruction_str->audio_num_chan; c++)
|
|
|
|
{
|
|
g = str_drc_instruction_str->channel_group_of_ch[c];
|
|
if (g >= 0) {
|
|
for (i = 0; i < ia_drc_params_struct->drc_frame_size; i++) {
|
|
sum = 0.0f;
|
|
for (b = 0; b < str_drc_instruction_str->band_count_of_ch_group[g];
|
|
b++) {
|
|
sum += drcBandAudio[signalIndex + b][i];
|
|
}
|
|
|
|
channel_audio[c][i] = sum;
|
|
}
|
|
signalIndex += str_drc_instruction_str->band_count_of_ch_group[g];
|
|
} else {
|
|
signalIndex++;
|
|
}
|
|
}
|
|
} else {
|
|
for (c = 0; c < str_drc_instruction_str->audio_num_chan; c++)
|
|
|
|
{
|
|
for (i = 0; i < ia_drc_params_struct->drc_frame_size; i++) {
|
|
channel_audio[c][i] = drcBandAudio[c][i];
|
|
}
|
|
}
|
|
}
|
|
return (0);
|
|
}
|
|
|
|
WORD32 removeTables(void) { return (0); }
|
|
|
|
const ia_slope_code_table_struct* impd_get_slope_code_tbl_by_value(void) {
|
|
return (&(slopeCodeTableEntryByValue[0]));
|
|
}
|
|
|
|
FLOAT32 impd_decode_slope_idx(const WORD32 slopeCodeIndex) {
|
|
const ia_slope_code_table_struct* slopeCodeTable =
|
|
impd_get_slope_code_tbl_by_value();
|
|
return slopeCodeTable[slopeCodeIndex].value;
|
|
}
|
|
|
|
FLOAT32 impd_decode_slope_idx_magnitude(const WORD32 slopeCodeIndex) {
|
|
const ia_slope_code_table_struct* slopeCodeTable =
|
|
impd_get_slope_code_tbl_by_value();
|
|
return (FLOAT32)fabs((FLOAT64)slopeCodeTable[slopeCodeIndex].value);
|
|
}
|
|
|
|
WORD32 impd_get_multi_band_drc_present(ia_drc_config* pstr_drc_config,
|
|
WORD32 numSets[3],
|
|
WORD32 multiBandDrcPresent[3]) {
|
|
WORD32 err = 0, k, m;
|
|
for (k = 0; k < pstr_drc_config->drc_instructions_uni_drc_count; k++) {
|
|
if ((pstr_drc_config->str_drc_instruction_str[k].downmix_id[0] ==
|
|
ID_FOR_BASE_LAYOUT) ||
|
|
(pstr_drc_config->str_drc_instruction_str[k].drc_apply_to_dwnmix ==
|
|
0)) {
|
|
numSets[0]++;
|
|
} else if (pstr_drc_config->str_drc_instruction_str[k].downmix_id[0] ==
|
|
ID_FOR_ANY_DOWNMIX) {
|
|
numSets[1]++;
|
|
} else {
|
|
numSets[2]++;
|
|
}
|
|
for (m = 0;
|
|
m < pstr_drc_config->str_drc_instruction_str[k].num_drc_ch_groups;
|
|
m++) {
|
|
if (pstr_drc_config->str_p_loc_drc_coefficients_uni_drc[0]
|
|
.gain_set_params[pstr_drc_config->str_drc_instruction_str
|
|
->gain_set_index_for_channel_group[m]]
|
|
.band_count > 1) {
|
|
if ((pstr_drc_config->str_drc_instruction_str[k].downmix_id[0] ==
|
|
ID_FOR_BASE_LAYOUT) ||
|
|
(pstr_drc_config->str_drc_instruction_str[k].drc_apply_to_dwnmix ==
|
|
0)) {
|
|
multiBandDrcPresent[0] = 1;
|
|
} else if (pstr_drc_config->str_drc_instruction_str[k].downmix_id[0] ==
|
|
ID_FOR_ANY_DOWNMIX) {
|
|
multiBandDrcPresent[1] = 1;
|
|
} else {
|
|
multiBandDrcPresent[2] = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return err;
|
|
}
|