151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick/****************************************************************************** 24908247643e9e97852e847c00bfe7c4259279538Ray Essick * 34908247643e9e97852e847c00bfe7c4259279538Ray Essick * Copyright (C) 2018 The Android Open Source Project 44908247643e9e97852e847c00bfe7c4259279538Ray Essick * 54908247643e9e97852e847c00bfe7c4259279538Ray Essick * Licensed under the Apache License, Version 2.0 (the "License"); 64908247643e9e97852e847c00bfe7c4259279538Ray Essick * you may not use this file except in compliance with the License. 74908247643e9e97852e847c00bfe7c4259279538Ray Essick * You may obtain a copy of the License at: 84908247643e9e97852e847c00bfe7c4259279538Ray Essick * 94908247643e9e97852e847c00bfe7c4259279538Ray Essick * http://www.apache.org/licenses/LICENSE-2.0 104908247643e9e97852e847c00bfe7c4259279538Ray Essick * 114908247643e9e97852e847c00bfe7c4259279538Ray Essick * Unless required by applicable law or agreed to in writing, software 124908247643e9e97852e847c00bfe7c4259279538Ray Essick * distributed under the License is distributed on an "AS IS" BASIS, 134908247643e9e97852e847c00bfe7c4259279538Ray Essick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144908247643e9e97852e847c00bfe7c4259279538Ray Essick * See the License for the specific language governing permissions and 154908247643e9e97852e847c00bfe7c4259279538Ray Essick * limitations under the License. 164908247643e9e97852e847c00bfe7c4259279538Ray Essick * 1751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick ***************************************************************************** 184908247643e9e97852e847c00bfe7c4259279538Ray Essick * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 194908247643e9e97852e847c00bfe7c4259279538Ray Essick*/ 2051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#ifndef IMPD_DRC_TABLES_H 2151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#define IMPD_DRC_TABLES_H 2251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 2351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#ifdef __cplusplus 24b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuriextern "C" { 2551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#endif 2651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 27b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri#define N_DELTA_TIME_CODE_TABLE_ENTRIES_MAX (512 + 14) 2851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 2951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 30b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 size; 31b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 code; 32b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 value; 3351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_delta_time_code_table_entry_struct; 3451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 3551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 36b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 size; 37b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 code; 38b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 value; 39b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 index; 4051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_slope_code_table_struct; 4151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 4251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 43b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 size; 44b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 code; 45b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 value; 4651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_delta_gain_code_table_struct; 4751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 4851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 49b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri ia_delta_time_code_table_entry_struct 50b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri delta_time_code_table[N_DELTA_TIME_CODE_TABLE_ENTRIES_MAX]; 5151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_tables_struct; 524908247643e9e97852e847c00bfe7c4259279538Ray Essick 5351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 54b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 in_out_ratio; 55b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 exp_lo; 56b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 exp_hi; 5751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_cicp_sigmoid_characteristic_param_struct; 5851aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 5951aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 60b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 inLevel; 61b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri FLOAT32 gain; 6251aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_characteristic_node_coordinate_struct; 6351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 6451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essicktypedef struct { 65b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32 coordinateCount; 66b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri ia_characteristic_node_coordinate_struct characteristicNodeCoordinate[5]; 6751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} ia_cicp_node_characteristic_param; 684908247643e9e97852e847c00bfe7c4259279538Ray Essick 6951aa06e124ba688ca810b25ee0b5bb66678aac14Ray EssickWORD32 70b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuriimpd_init_tbls(const WORD32 num_gain_max_values, ia_tables_struct* str_tables); 7151aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 72b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katurivoid impd_gen_delta_time_code_tbl( 73b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri const WORD32 num_gain_max_values, 74b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri ia_delta_time_code_table_entry_struct* delta_time_code_tbl_item); 7551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 76b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katurivoid impd_get_delta_gain_code_tbl( 77b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri const WORD32 gain_coding_profile, 78b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri ia_delta_gain_code_table_struct const** delta_time_code_tbl, 79b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuri WORD32* num_entries); 8051aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 8151aa06e124ba688ca810b25ee0b5bb66678aac14Ray EssickWORD32 82b3226ce6f80c78946aa3190cec158fb9852272eaRamesh Katuriimpd_get_delta_tmin(const WORD32 sampling_rate); 8351aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick 8451aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#ifdef __cplusplus 8551aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick} 8651aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#endif 8751aa06e124ba688ca810b25ee0b5bb66678aac14Ray Essick#endif 88