1*15dc779aSAndroid Build Coastguard Worker /****************************************************************************** 2*15dc779aSAndroid Build Coastguard Worker * * 3*15dc779aSAndroid Build Coastguard Worker * Copyright (C) 2023 The Android Open Source Project 4*15dc779aSAndroid Build Coastguard Worker * 5*15dc779aSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*15dc779aSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*15dc779aSAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*15dc779aSAndroid Build Coastguard Worker * 9*15dc779aSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*15dc779aSAndroid Build Coastguard Worker * 11*15dc779aSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*15dc779aSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*15dc779aSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*15dc779aSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*15dc779aSAndroid Build Coastguard Worker * limitations under the License. 16*15dc779aSAndroid Build Coastguard Worker * 17*15dc779aSAndroid Build Coastguard Worker ***************************************************************************** 18*15dc779aSAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*15dc779aSAndroid Build Coastguard Worker */ 20*15dc779aSAndroid Build Coastguard Worker 21*15dc779aSAndroid Build Coastguard Worker #pragma once 22*15dc779aSAndroid Build Coastguard Worker 23*15dc779aSAndroid Build Coastguard Worker #ifndef IXHEAACE_MAX_CH_IN_BS_ELE 24*15dc779aSAndroid Build Coastguard Worker #define IXHEAACE_MAX_CH_IN_BS_ELE (2) 25*15dc779aSAndroid Build Coastguard Worker #endif 26*15dc779aSAndroid Build Coastguard Worker 27*15dc779aSAndroid Build Coastguard Worker #define FRAME_LEN_BYTES_MODULO (1) 28*15dc779aSAndroid Build Coastguard Worker #define FRAME_LEN_BYTES_INT (2) 29*15dc779aSAndroid Build Coastguard Worker 30*15dc779aSAndroid Build Coastguard Worker typedef struct { 31*15dc779aSAndroid Build Coastguard Worker WORD32 ch_bitrate; 32*15dc779aSAndroid Build Coastguard Worker WORD32 avg_bits; 33*15dc779aSAndroid Build Coastguard Worker WORD32 max_bits; 34*15dc779aSAndroid Build Coastguard Worker WORD32 bit_res_lvl; 35*15dc779aSAndroid Build Coastguard Worker WORD32 max_bitres_bits; 36*15dc779aSAndroid Build Coastguard Worker WORD32 static_bits; 37*15dc779aSAndroid Build Coastguard Worker FLOAT32 max_bit_fac; 38*15dc779aSAndroid Build Coastguard Worker WORD32 tot_avg_bits; 39*15dc779aSAndroid Build Coastguard Worker WORD32 padding; 40*15dc779aSAndroid Build Coastguard Worker ia_adj_thr_state_struct str_adj_thr; 41*15dc779aSAndroid Build Coastguard Worker ia_adj_thr_elem_struct str_adj_thr_ele; 42*15dc779aSAndroid Build Coastguard Worker WORD8 num_ch; 43*15dc779aSAndroid Build Coastguard Worker } ia_qc_data_struct; 44*15dc779aSAndroid Build Coastguard Worker 45*15dc779aSAndroid Build Coastguard Worker typedef struct { 46*15dc779aSAndroid Build Coastguard Worker WORD16 quant_spec[LEN_SUPERFRAME]; 47*15dc779aSAndroid Build Coastguard Worker UWORD16 max_val_in_sfb[LEN_SUPERFRAME]; 48*15dc779aSAndroid Build Coastguard Worker WORD16 scalefactor[LEN_SUPERFRAME]; 49*15dc779aSAndroid Build Coastguard Worker WORD32 global_gain; 50*15dc779aSAndroid Build Coastguard Worker } ia_qc_out_chan_struct; 51*15dc779aSAndroid Build Coastguard Worker 52*15dc779aSAndroid Build Coastguard Worker typedef struct { 53*15dc779aSAndroid Build Coastguard Worker ia_qc_out_chan_struct str_qc_out_chan[IXHEAACE_MAX_CH_IN_BS_ELE]; 54*15dc779aSAndroid Build Coastguard Worker WORD32 static_bits; 55*15dc779aSAndroid Build Coastguard Worker WORD32 dyn_bits; 56*15dc779aSAndroid Build Coastguard Worker WORD32 fill_bits; 57*15dc779aSAndroid Build Coastguard Worker FLOAT32 pe; 58*15dc779aSAndroid Build Coastguard Worker } ia_qc_out_data_struct; 59*15dc779aSAndroid Build Coastguard Worker 60*15dc779aSAndroid Build Coastguard Worker typedef struct { 61*15dc779aSAndroid Build Coastguard Worker ia_qc_data_struct str_qc_data[IXHEAACE_MAX_CH_IN_BS_ELE]; 62*15dc779aSAndroid Build Coastguard Worker ia_qc_out_data_struct str_qc_out; 63*15dc779aSAndroid Build Coastguard Worker } ia_qc_main_struct; 64*15dc779aSAndroid Build Coastguard Worker 65*15dc779aSAndroid Build Coastguard Worker VOID iusace_qc_create(ia_qc_main_struct *pstr_qc_data); 66*15dc779aSAndroid Build Coastguard Worker 67*15dc779aSAndroid Build Coastguard Worker VOID iusace_qc_init(ia_qc_data_struct *pstr_qc_data, const WORD32 max_bits, WORD32 sample_rate, 68*15dc779aSAndroid Build Coastguard Worker WORD32 bw_limit, WORD32 channels, WORD32 ccfl); 69*15dc779aSAndroid Build Coastguard Worker 70*15dc779aSAndroid Build Coastguard Worker VOID iusace_adj_bitrate(ia_qc_data_struct *pstr_qc_data, WORD32 bit_rate, WORD32 sample_rate, 71*15dc779aSAndroid Build Coastguard Worker WORD32 ccfl); 72*15dc779aSAndroid Build Coastguard Worker 73*15dc779aSAndroid Build Coastguard Worker WORD32 iusace_calc_max_val_in_sfb(WORD32 sfb_count, WORD32 max_sfb_per_grp, WORD32 sfb_per_group, 74*15dc779aSAndroid Build Coastguard Worker WORD32 *ptr_sfb_offset, WORD16 *ptr_quant_spec); 75