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 typedef struct { 23*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_smooth_mode[MAX_NUM_PARAMS]; 24*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_smooth_time[MAX_NUM_PARAMS]; 25*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_freq_res_stride[MAX_NUM_PARAMS]; 26*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_smg_data[MAX_NUM_PARAMS][MAX_NUM_BINS]; 27*15dc779aSAndroid Build Coastguard Worker 28*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_smg_data; 29*15dc779aSAndroid Build Coastguard Worker 30*15dc779aSAndroid Build Coastguard Worker typedef struct { 31*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_framing_type; 32*15dc779aSAndroid Build Coastguard Worker WORD32 num_param_sets; 33*15dc779aSAndroid Build Coastguard Worker WORD32 bs_param_slots[MAX_NUM_PARAMS]; 34*15dc779aSAndroid Build Coastguard Worker 35*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_framing_info; 36*15dc779aSAndroid Build Coastguard Worker 37*15dc779aSAndroid Build Coastguard Worker typedef struct { 38*15dc779aSAndroid Build Coastguard Worker WORD8 cld[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS][MAX_NUM_BINS]; 39*15dc779aSAndroid Build Coastguard Worker WORD8 icc[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS][MAX_NUM_BINS]; 40*15dc779aSAndroid Build Coastguard Worker 41*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_ott_data; 42*15dc779aSAndroid Build Coastguard Worker 43*15dc779aSAndroid Build Coastguard Worker typedef struct { 44*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_env_shape_channel[MAX_NUM_OUTPUTCHANNELS]; 45*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_env_shape_data[MAX_NUM_OUTPUTCHANNELS][MAX_TIME_SLOTS]; 46*15dc779aSAndroid Build Coastguard Worker 47*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_temp_shape_data; 48*15dc779aSAndroid Build Coastguard Worker 49*15dc779aSAndroid Build Coastguard Worker typedef struct { 50*15dc779aSAndroid Build Coastguard Worker WORD32 num_ott_boxes; 51*15dc779aSAndroid Build Coastguard Worker WORD32 num_in_chan; 52*15dc779aSAndroid Build Coastguard Worker WORD32 num_out_chan; 53*15dc779aSAndroid Build Coastguard Worker 54*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_tree_description; 55*15dc779aSAndroid Build Coastguard Worker 56*15dc779aSAndroid Build Coastguard Worker typedef struct { 57*15dc779aSAndroid Build Coastguard Worker WORD32 bs_ott_bands; 58*15dc779aSAndroid Build Coastguard Worker 59*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_ott_config; 60*15dc779aSAndroid Build Coastguard Worker 61*15dc779aSAndroid Build Coastguard Worker typedef struct { 62*15dc779aSAndroid Build Coastguard Worker WORD32 bs_sampling_frequency; 63*15dc779aSAndroid Build Coastguard Worker WORD32 bs_frame_length; 64*15dc779aSAndroid Build Coastguard Worker WORD32 num_bands; 65*15dc779aSAndroid Build Coastguard Worker WORD32 bs_tree_config; 66*15dc779aSAndroid Build Coastguard Worker WORD32 bs_quant_mode; 67*15dc779aSAndroid Build Coastguard Worker WORD32 bs_fixed_gain_dmx; 68*15dc779aSAndroid Build Coastguard Worker WORD32 bs_env_quant_mode; 69*15dc779aSAndroid Build Coastguard Worker WORD32 bs_decorr_config; 70*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_tree_description tree_description; 71*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_ott_config ott_config[IXHEAACE_MPS_MAX_NUM_BOXES]; 72*15dc779aSAndroid Build Coastguard Worker 73*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_spatial_specific_config; 74*15dc779aSAndroid Build Coastguard Worker typedef struct { 75*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_xxx_data_mode[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 76*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_data_pair[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 77*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_quant_coarse_xxx[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 78*15dc779aSAndroid Build Coastguard Worker UWORD8 bs_freq_res_stride_xxx[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 79*15dc779aSAndroid Build Coastguard Worker 80*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_lossless_data; 81*15dc779aSAndroid Build Coastguard Worker typedef struct { 82*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_framing_info framing_info; 83*15dc779aSAndroid Build Coastguard Worker WORD32 bs_independency_flag; 84*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_ott_data ott_data; 85*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_smg_data smg_data; 86*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_temp_shape_data temp_shape_data; 87*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_lossless_data cld_lossless_data; 88*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_lossless_data icc_lossless_data; 89*15dc779aSAndroid Build Coastguard Worker UWORD8 b_use_bb_cues; 90*15dc779aSAndroid Build Coastguard Worker 91*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_spatial_frame; 92*15dc779aSAndroid Build Coastguard Worker 93*15dc779aSAndroid Build Coastguard Worker typedef struct { 94*15dc779aSAndroid Build Coastguard Worker WORD8 cld_old[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_BINS]; 95*15dc779aSAndroid Build Coastguard Worker WORD8 icc_old[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_BINS]; 96*15dc779aSAndroid Build Coastguard Worker UWORD8 quant_coarse_cld_prev[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 97*15dc779aSAndroid Build Coastguard Worker UWORD8 quant_coarse_icc_prev[IXHEAACE_MPS_MAX_NUM_BOXES][MAX_NUM_PARAMS]; 98*15dc779aSAndroid Build Coastguard Worker 99*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_prev_ott_data; 100*15dc779aSAndroid Build Coastguard Worker 101*15dc779aSAndroid Build Coastguard Worker typedef struct { 102*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_prev_ott_data prev_ott_data; 103*15dc779aSAndroid Build Coastguard Worker 104*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_static_spatial_frame; 105*15dc779aSAndroid Build Coastguard Worker 106*15dc779aSAndroid Build Coastguard Worker typedef struct ixheaace_mps_bsf_instance { 107*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_spatial_specific_config spatial_specific_config; 108*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_spatial_frame frame; 109*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_static_spatial_frame prev_frame_data; 110*15dc779aSAndroid Build Coastguard Worker 111*15dc779aSAndroid Build Coastguard Worker } ixheaace_mps_bsf_instance; 112*15dc779aSAndroid Build Coastguard Worker 113*15dc779aSAndroid Build Coastguard Worker typedef struct ixheaace_mps_bsf_instance *ixheaace_mps_pstr_bsf_instance; 114*15dc779aSAndroid Build Coastguard Worker 115*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_mps_212_write_spatial_specific_config( 116*15dc779aSAndroid Build Coastguard Worker ixheaace_mps_spatial_specific_config *const pstr_spatial_specific_config, 117*15dc779aSAndroid Build Coastguard Worker UWORD8 *const ptr_output_buffer, const WORD32 output_buffer_size, 118*15dc779aSAndroid Build Coastguard Worker WORD32 *const ptr_output_bits, WORD32 aot); 119*15dc779aSAndroid Build Coastguard Worker 120*15dc779aSAndroid Build Coastguard Worker IA_ERRORCODE ixheaace_mps_212_write_spatial_frame( 121*15dc779aSAndroid Build Coastguard Worker UWORD8 *const ptr_output_buffer, const WORD32 output_buffer_size, 122*15dc779aSAndroid Build Coastguard Worker WORD32 *const ptr_output_bits, ixheaace_mps_pstr_bsf_instance pstr_bsf_instance, WORD32 aot); 123