1 /****************************************************************************** 2 * * 3 * Copyright (C) 2023 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 21 #pragma once 22 23 #define IXHEAACE_MAX_ENV_VARVAR (IXHEAACE_MAX_ENV) 24 #define IXHEAACE_MAX_ENV_FIXVAR_VARFIX (4) 25 #define IXHEAACE_MAX_NUM_REL (3) 26 #define IXHEAACE_MAX_ABS_BORDERS (9) 27 #define IXHEAACE_DC (4711) 28 #define IXHEAACE_EMPTY (-99) 29 #define TIME_SLOTS_15 (15) 30 #define NUM_ENVELOPE_1 (1) 31 #define NUM_ENVELOPE_2 (2) 32 #define NUM_ENVELOPE_4 (4) 33 34 /* SBR frame class definitions */ 35 typedef enum { 36 IXHEAACE_FIXFIX = 0, 37 IXHEAACE_FIXVAR, 38 IXHEAACE_VARFIX, 39 IXHEAACE_VARVAR 40 } ixheaace_frame_class; 41 42 typedef struct { 43 ixheaace_frame_class frame_type; 44 WORD32 bs_num_env; 45 WORD32 bs_abs_bord; 46 WORD32 n; 47 WORD32 p; 48 WORD32 bs_rel_bord[IXHEAACE_MAX_NUM_REL]; 49 ixheaace_freq_res v_f[IXHEAACE_MAX_ENV_FIXVAR_VARFIX]; 50 WORD32 bs_abs_bord_0; 51 WORD32 bs_abs_bord_1; 52 WORD32 bs_num_rel_0; 53 WORD32 bs_num_rel_1; 54 WORD32 bs_rel_bord_0[IXHEAACE_MAX_NUM_REL]; 55 WORD32 bs_rel_bord_1[IXHEAACE_MAX_NUM_REL]; 56 ixheaace_freq_res v_f_lr[IXHEAACE_MAX_ENV_VARVAR]; 57 WORD32 bs_transient_position; 58 WORD32 abs_bord_vec[IXHEAACE_MAX_ABS_BORDERS]; 59 } ixheaace_str_sbr_grid; 60 61 typedef ixheaace_str_sbr_grid *ixheaace_pstr_sbr_grid; 62 63 typedef ixheaace_str_frame_info_sbr *ixheaace_pstr_sbr_frame_info; 64 65 typedef struct { 66 WORD32 static_framing; 67 WORD32 num_env_static; 68 ixheaace_freq_res freq_res_fix; 69 WORD32 *ptr_v_tuning_segm; 70 WORD32 dmin; 71 WORD32 dmax; 72 WORD32 allow_spread; 73 ixheaace_frame_class frame_type_old; 74 WORD32 spread_flag; 75 WORD32 v_bord[2 * IXHEAACE_MAX_ENV_VARVAR + 1]; 76 WORD32 length_v_bord; 77 ixheaace_freq_res v_freq[2 * IXHEAACE_MAX_ENV_VARVAR + 1]; 78 WORD32 length_v_freq; 79 WORD32 v_bord_follow[IXHEAACE_MAX_ENV_VARVAR]; 80 WORD32 length_v_bord_follow; 81 WORD32 i_tran_follow; 82 WORD32 i_fill_follow; 83 ixheaace_freq_res v_freq_follow[IXHEAACE_MAX_ENV_VARVAR]; 84 WORD32 length_v_freq_follow; 85 ixheaace_str_sbr_grid sbr_grid; 86 ixheaace_str_frame_info_sbr sbr_frame_info; 87 WORD32 use_low_freq_res; 88 } ixheaace_str_sbr_env_frame; 89 90 typedef ixheaace_str_sbr_env_frame *ixheaace_pstr_sbr_env_frame; 91 92 VOID ixheaace_create_frame_info_generator(ixheaace_pstr_sbr_env_frame sbr_env_frame_handle, 93 WORD32 allow_spread, WORD32 num_env_static, 94 WORD32 static_framing, ixheaace_freq_res freq_res_fix, 95 WORD32 use_low_freq_res); 96 97 IA_ERRORCODE 98 ixheaace_frame_info_generator(ixheaace_pstr_sbr_env_frame pstr_sbr_env_frame, 99 WORD32 *ptr_v_pre_transient_info, WORD32 *ptr_v_transient_info, 100 WORD32 *ptr_v_tuning, ixheaace_str_qmf_tabs *ptr_qmf_tab, 101 WORD32 num_time_slots, WORD32 is_ld_sbr, 102 ixheaace_pstr_sbr_frame_info *ptr_frame_info, 103 WORD32 flag_framelength_small); 104