249 lines
7.0 KiB
C
249 lines
7.0 KiB
C
/******************************************************************************
|
|
* *
|
|
* Copyright (C) 2018 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
|
|
*/
|
|
#ifndef IXHEAACD_SBR_CONST_H
|
|
#define IXHEAACD_SBR_CONST_H
|
|
|
|
#define SBR_AMPLITUDE_RESOLUTION_1_5 0
|
|
#define SBR_AMPLITUDE_RESOLUTION_3_0 1
|
|
#define NOISE_FLOOR_OFFSET_INT 6
|
|
|
|
#define LOW 0
|
|
#define HIGH 1
|
|
|
|
#define DTDF_DIR_TIME 1
|
|
#define DTDF_DIR_FREQ 0
|
|
|
|
#define SBR_CYC_REDCY_CHK_BITS 10
|
|
|
|
#define SBR_SAMP_FEQ_LVL_DEF 2
|
|
#define SBR_CHANGE_LVL_DEF 1
|
|
#define SBR_NOISE_BND_DEF 2
|
|
|
|
#define SBR_BND_LIMIT_DEF 2
|
|
#define SBR_GAIN_LIMIT_DEF 2
|
|
#define SBR_INTERPOL_SAMP_FEQ_DEF 1
|
|
#define SBR_SMOOTH_LEN_DEF 1
|
|
|
|
#define SBR_AMPLITUDE_RESOLUTION_BITS 1
|
|
#define SBR_BEGIN_SAMP_FREQ_BITS 4
|
|
#define SBR_END_SAMP_FREQ_BITS 4
|
|
#define SBR_CROSS_OVER_BND_BITS 3
|
|
|
|
#define ESBR_CROSS_OVER_BND_BITS 4
|
|
#define ESBR_PRE_FLAT_BITS 1
|
|
#define ESBR_PVC_MODE_BITS 2
|
|
|
|
#define ESBR_HEADER_EXTRA_3_BITS 1
|
|
#define PVC_MODE_BITS 2
|
|
|
|
#define SBR_HDR_EXTR_1_BITS 1
|
|
#define SBR_HDR_EXTR_2_BITS 1
|
|
|
|
#define SBR_SAMP_FREQ_LVL_BITS 2
|
|
#define SBR_CHANGE_LVL_BITS 1
|
|
#define SBR_NOISE_BND_BITS 2
|
|
|
|
#define SBR_BND_LIMIT_BITS 2
|
|
#define SBR_GAIN_LIMIT_BITS 2
|
|
#define SBR_INTERPOL_SAMP_FREQ_BITS 1
|
|
#define SBR_SMOOTH_LEN_BITS 1
|
|
#define SBR_STOCK_HE2_BITS 1
|
|
#define SBR_HDR_RESERV_BITS 2
|
|
#define SBR_SCE_RESERV_BITS 4
|
|
|
|
#define SBR_COUPLNG_MODE_BITS 1
|
|
|
|
#define SBR_INVERSE_FILT_MODE_BITS 2
|
|
|
|
#define SBR_ENLARGED_DATA_BITS 1
|
|
#define SBR_CONT_SIZE_BITS 4
|
|
#define SBR_CONT_ESC_CNT_BITS 8
|
|
#define SBR_CONT_ID_BITS 2
|
|
|
|
#define SBR_DEL_COD_DIR_BITS 1
|
|
|
|
#define SBR_ADD_SINE_FLAG_BITS 1
|
|
|
|
#define SBR_BEGIN_ENVN_BITS_AMPLITUDE_RESOLUTION_3_0 6
|
|
#define SBR_BEGIN_ENVN_BITS_BALNCE_AMPLITUDE_RESOLUTION_3_0 5
|
|
#define SBR_BEGIN_NOISE_BITS_AMPLITUDE_RESOLUTION_3_0 5
|
|
#define SBR_BEGIN_NOISE_BITS_BALNCE_AMPLITUDE_RESOLUTION_3_0 5
|
|
|
|
#define SBR_BEGIN_ENVN_BITS_AMPLITUDE_RESOLUTION_1_5 7
|
|
#define SBR_BEGIN_ENVN_BITS_BALNCE_AMPLITUDE_RESOLUTION_1_5 6
|
|
|
|
#define NOISE_FLOOR_OFFSET 6.0f
|
|
|
|
#define QMF_BUFFER_SIZE 64
|
|
#define TIMESLOT_BUFFER_SIZE 78
|
|
|
|
#define MAX_NUM_QMF_BANDS_ESBR 128
|
|
|
|
#define SBR_HF_ADJ_OFFSET 2
|
|
#define MPS_SBR_DELAY 6 /* 6 qmf samples */
|
|
|
|
#define ESBR_HBE_DELAY_OFFSET 32 /* 32 qmf samples */
|
|
|
|
#define HBE_OPER_WIN_LEN (13)
|
|
#define NO_QMF_SYNTH_CHANNELS 64
|
|
#define TWICE_QMF_SYNTH_CHANNELS_NUM 128
|
|
|
|
#define MAX_NO_COLS_VALUE 64
|
|
#define MAX_NO_COLS_VALUE_BY_2 (MAX_NO_COLS_VALUE >> 1)
|
|
|
|
#define MAX_QMF_X_INBUF_SIZE (MAX_NO_COLS_VALUE_BY_2 + HBE_OPER_WIN_LEN - 1)
|
|
#define MAX_QMF_X_OUTBUF_SIZE \
|
|
2 * (MAX_NO_COLS_VALUE_BY_2 + HBE_OPER_WIN_LEN - 1)
|
|
#define MAX_QMF_X_IN_REAL_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_INBUF_SIZE)
|
|
#define MAX_QMF_X_IN_IMAG_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_INBUF_SIZE)
|
|
|
|
#define MAX_QMF_X_OUT_REAL_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_OUTBUF_SIZE)
|
|
#define MAX_QMF_X_OUT_IMAG_BUF (NO_QMF_SYNTH_CHANNELS * MAX_QMF_X_OUTBUF_SIZE)
|
|
|
|
#define X_INBUF_SIZE (MAX_FRAME_SIZE + NO_QMF_SYNTH_CHANNELS)
|
|
#define X_OUTBUF_SIZE (X_INBUF_SIZE * 2)
|
|
|
|
#define HBE_OPER_BLK_LEN_2 10
|
|
#define HBE_OPER_BLK_LEN_3 8
|
|
#define HBE_OPER_BLK_LEN_4 6
|
|
|
|
#define MAX_HBE_PERSISTENT_SIZE \
|
|
(MAX_QMF_X_INBUF_SIZE * sizeof(FLOAT32*) + \
|
|
MAX_QMF_X_OUTBUF_SIZE * sizeof(FLOAT32*) + \
|
|
MAX_QMF_X_IN_REAL_BUF * sizeof(FLOAT32) + \
|
|
MAX_QMF_X_IN_IMAG_BUF * sizeof(FLOAT32) + \
|
|
MAX_QMF_X_OUT_REAL_BUF * sizeof(FLOAT32) + \
|
|
MAX_QMF_X_OUT_IMAG_BUF * sizeof(FLOAT32) + X_INBUF_SIZE * sizeof(FLOAT32) + \
|
|
X_OUTBUF_SIZE * sizeof(FLOAT32))
|
|
|
|
#define MAX_QMF_BUF_LEN 78
|
|
|
|
#define SBR_FRAME_CLASS_BITS 2
|
|
#define SBR_VAR_BORD_BITS 2
|
|
#define SBR_FRQ_RES_BITS 1
|
|
#define SBR_REL_BITS 2
|
|
#define SBR_ENV_BITS 2
|
|
#define SBR_NUM_BITS 2
|
|
|
|
#define FIXFIX 0
|
|
#define FIXVAR 1
|
|
#define VARFIX 2
|
|
#define VARVAR 3
|
|
|
|
#define LEN_NIBBLE (4)
|
|
|
|
#define PI 3.14159265358979323846264338327950288
|
|
#define EPS 1e-12f
|
|
#define LOG2 0.69314718056f
|
|
|
|
#define MAX_STRETCH 4
|
|
#define MAXDEG 3
|
|
|
|
#define EXP_FOR_SQRT 0.5f
|
|
|
|
#define SBR_HF_RELAXATION_PARAM 0.999999f
|
|
|
|
#define ESBR_PATCHING_MODE_BITS 1
|
|
#define ESBR_OVERSAMPLING_FLAG_BITS 1
|
|
#define ESBR_PITCHIN_FLAG_BITS 1
|
|
#define ESBR_PITCHIN_BINS_BITS 7
|
|
#define ESBR_RESERVED_PRESENT 1
|
|
#define ESBR_RESERVED_BITS_DATA 4
|
|
#define ESBR_INVF_MODE_BITS 2
|
|
#define ESBR_NOISE_MODE_BITS 1
|
|
#define ESBR_DOMAIN_BITS 1
|
|
|
|
#define SBR_NUM_QMF_BANDS 64
|
|
#define SBR_NUM_QMF_BANDS_2 32
|
|
|
|
#define PVC_NUM_TIME_SLOTS 16
|
|
#define PVC_ESG_MIN_VAL 0.1f
|
|
|
|
#define PVC_10LOG10_ESG_MIN_VAL -10.0f
|
|
|
|
#define PVC_DIV_MODE_BITS 3
|
|
#define PVC_NS_MODE_BITS 1
|
|
#define PVC_GRID_INFO_BITS 1
|
|
#define PVC_REUSE_PVC_ID_BITS 1
|
|
#define PVC_ID_BITS 7
|
|
#define PVC_NB_HIGH_MODE1 8
|
|
#define PVC_NB_HIGH_MODE2 6
|
|
|
|
#define PVC_NB_LOW 3
|
|
#define PVC_ID_NUM_GROUPS 3
|
|
#define PVC_NB_HIGH 128
|
|
#define PVC_ID_NBIT 7
|
|
|
|
#define ESC_SIN_POS 31
|
|
#define MAX_OCTAVE 29
|
|
#define MAX_SECOND_REGION 50
|
|
|
|
#define SBR_ENERGY_PAN_OFFSET 12
|
|
#define SBR_ENV_SF_MAX_VAL_1_5 70
|
|
#define MAX_NOISE_FLOOR_FAC_VAL 35
|
|
#define MIN_NOISE_FLOOR_FAC_VAL 0
|
|
|
|
#define HBE_ZERO_BAND_IDX 6
|
|
|
|
#define MAX_OV_DELAY 12
|
|
|
|
#define LD_TRAN 1
|
|
#define LD_ENV_TIME_SLOT 7
|
|
#define LD_ENV_TBL_512 16
|
|
#define LD_ENV_TBL_480 15
|
|
#define LD_ENV_TBL_SIZE 4
|
|
#define SBR_TRAN_BITS 4
|
|
#define SBRLD_CLA_BITS 1
|
|
#define SBR_ENVT_NUMENV 0
|
|
#define SBR_ENVT_TRANIDX 3
|
|
|
|
static const int ixheaacd_ld_env_table_512[LD_ENV_TBL_512][LD_ENV_TBL_SIZE] = {
|
|
{2, 4, -1, 0}, {2, 5, -1, 0}, {3, 2, 6, 1}, {3, 3, 7, 1},
|
|
{3, 4, 8, 1}, {3, 5, 9, 1}, {3, 6, 10, 1}, {3, 7, 11, 1},
|
|
{3, 8, 12, 1}, {3, 9, 13, 1}, {3, 10, 14, 1}, {2, 11, -1, 1},
|
|
{2, 12, -1, 1}, {2, 13, -1, 1}, {2, 14, -1, 1}, {2, 15, -1, 1},
|
|
};
|
|
|
|
static const int ixheaacd_ld_env_table_480[LD_ENV_TBL_480][LD_ENV_TBL_SIZE] = {
|
|
{2, 4, -1, 0}, {2, 5, -1, 0}, {3, 2, 6, 1}, {3, 3, 7, 1},
|
|
{3, 4, 8, 1}, {3, 5, 9, 1}, {3, 6, 10, 1}, {3, 7, 11, 1},
|
|
{3, 8, 12, 1}, {3, 9, 13, 1}, {2, 10, -1, 1}, {2, 11, -1, 1},
|
|
{2, 12, -1, 1}, {2, 13, -1, 1}, {2, 14, -1, 1},
|
|
};
|
|
|
|
static const int ixheaacd_ld_env_table_time_slot[LD_ENV_TIME_SLOT] = {
|
|
8, 5, 0, 0, 0, 0, 0};
|
|
|
|
#define SBR_CLA_BITS 2
|
|
#define SBR_ABS_BITS 2
|
|
#define SBR_RES_BITS 1
|
|
#define SBR_REL_BITS 2
|
|
#define SBR_ENV_BITS 2
|
|
#define SBR_NUM_BITS 2
|
|
|
|
#define FIXFIX 0
|
|
#define FIXVAR 1
|
|
#define VARFIX 2
|
|
#define VARVAR 3
|
|
|
|
#define LEN_NIBBLE (4)
|
|
|
|
#endif
|