/*************************************************************************** * * Copyright 2015-2019 BES. * All rights reserved. All unpublished rights reserved. * * No part of this work may be used or reproduced in any form or by any * means, or stored in a database or retrieval system, without prior written * permission of BES. * * Use of this work is governed by a license granted by BES. * This work contains confidential and proprietary information of * BES. which is protected by copyright, trade secret, * trademark and other intellectual property rights. * ****************************************************************************/ #ifndef AUDIO_DEF_H #define AUDIO_DEF_H #ifdef __cplusplus extern "C" { #endif #include #define CODEC_FREQ_24M 24000000 #define CODEC_FREQ_26M 26000000 #define CODEC_FREQ_24P576M 24576000 #define CODEC_FREQ_22P5792M 22579200 #define CODEC_FREQ_48K_SERIES CODEC_FREQ_24P576M #define CODEC_FREQ_44_1K_SERIES CODEC_FREQ_22P5792M #if 0 #elif defined(CHIP_BEST3001) || defined(CHIP_BEST3003) || defined(CHIP_BEST3005) #define CODEC_FREQ_CRYSTAL CODEC_FREQ_24M #define CODEC_PLL_DIV 36 #define CODEC_CMU_DIV 9 #ifdef CHIP_BEST3001 #define CODEC_PLAYBACK_BIT_DEPTH 20 #else #define CODEC_PLAYBACK_BIT_DEPTH 24 #endif #elif defined(CHIP_BEST1400) || defined(CHIP_BEST1402) || \ defined(CHIP_BEST2300) || defined(CHIP_BEST2300A) || \ defined(CHIP_BEST2300P) #define CODEC_FREQ_EXTRA_DIV 2 #define CODEC_PLL_DIV 16 #define CODEC_CMU_DIV 8 #define CODEC_PLAYBACK_BIT_DEPTH 24 #elif defined(CHIP_BEST1000) #if defined(__AUDIO_DIV_10___) #define CODEC_PLL_DIV 10 #elif defined(__AUDIO_DIV_9___) #define CODEC_PLL_DIV 9 #else #define CODEC_PLL_DIV 8 #endif #define CODEC_CMU_DIV CODEC_PLL_DIV #define CODEC_PLAYBACK_BIT_DEPTH 18 #elif defined(CHIP_BEST2000) #define CODEC_PLL_DIV 32 #define CODEC_CMU_DIV 8 #define CODEC_PLAYBACK_BIT_DEPTH 20 #elif defined(CHIP_BEST2001) #define CODEC_PLL_DIV 38 #define CODEC_CMU_DIV 8 #define CODEC_PLAYBACK_BIT_DEPTH 20 #else #error "Please update audio definitions" #endif #ifndef CODEC_FREQ_CRYSTAL #define CODEC_FREQ_CRYSTAL CODEC_FREQ_26M #endif #ifndef CODEC_FREQ_EXTRA_DIV #define CODEC_FREQ_EXTRA_DIV 1 #endif #define CODEC_TX_PA_GAIN_DEFAULT -1 enum AUD_STREAM_USE_DEVICE_T{ AUD_STREAM_USE_DEVICE_NULL = 0, AUD_STREAM_USE_EXT_CODEC, AUD_STREAM_USE_I2S0_MASTER, AUD_STREAM_USE_I2S0_SLAVE, AUD_STREAM_USE_I2S1_MASTER, AUD_STREAM_USE_I2S1_SLAVE, AUD_STREAM_USE_TDM0_MASTER, AUD_STREAM_USE_TDM0_SLAVE, AUD_STREAM_USE_TDM1_MASTER, AUD_STREAM_USE_TDM1_SLAVE, AUD_STREAM_USE_INT_CODEC, AUD_STREAM_USE_INT_SPDIF, AUD_STREAM_USE_BT_PCM, AUD_STREAM_USE_DPD_RX, AUD_STREAM_USE_MC, }; enum AUD_SAMPRATE_T { AUD_SAMPRATE_NULL = 0, AUD_SAMPRATE_7350 = 7350, AUD_SAMPRATE_8000 = 8000, AUD_SAMPRATE_8463 = 8463, // 26M / 512 / 6 AUD_SAMPRATE_14700 = 14700, AUD_SAMPRATE_16000 = 16000, AUD_SAMPRATE_16927 = 16927, // 26M / 512 / 3 AUD_SAMPRATE_22050 = 22050, AUD_SAMPRATE_24000 = 24000, AUD_SAMPRATE_32000 = 32000, AUD_SAMPRATE_44100 = 44100, AUD_SAMPRATE_48000 = 48000, AUD_SAMPRATE_50781 = 50781, // 26M / 512 AUD_SAMPRATE_64000 = 64000, AUD_SAMPRATE_88200 = 88200, AUD_SAMPRATE_96000 = 96000, AUD_SAMPRATE_101562 = 101562, // 26M / 256 AUD_SAMPRATE_128000 = 128000, AUD_SAMPRATE_176400 = 176400, AUD_SAMPRATE_192000 = 192000, AUD_SAMPRATE_203125 = 203125, // 26M / 128 AUD_SAMPRATE_256000 = 256000, AUD_SAMPRATE_352800 = 352800, AUD_SAMPRATE_384000 = 384000, AUD_SAMPRATE_406250 = 406250, // 26M / 64 AUD_SAMPRATE_512000 = 512000, AUD_SAMPRATE_705600 = 705600, AUD_SAMPRATE_768000 = 768000, AUD_SAMPRATE_1024000 = 1024000, }; enum AUD_CHANNEL_NUM_T { AUD_CHANNEL_NUM_NULL = 0, AUD_CHANNEL_NUM_1 = 1, AUD_CHANNEL_NUM_2 = 2, AUD_CHANNEL_NUM_3 = 3, AUD_CHANNEL_NUM_4 = 4, AUD_CHANNEL_NUM_5 = 5, AUD_CHANNEL_NUM_6 = 6, AUD_CHANNEL_NUM_7 = 7, AUD_CHANNEL_NUM_8 = 8, }; // For preprocess check #define AUD_CHANNEL_MAP_CH0 (1 << 0) #define AUD_CHANNEL_MAP_CH1 (1 << 1) #define AUD_CHANNEL_MAP_CH2 (1 << 2) #define AUD_CHANNEL_MAP_CH3 (1 << 3) #define AUD_CHANNEL_MAP_CH4 (1 << 4) #define AUD_CHANNEL_MAP_CH5 (1 << 5) #define AUD_CHANNEL_MAP_CH6 (1 << 6) #define AUD_CHANNEL_MAP_CH7 (1 << 7) #define AUD_CHANNEL_MAP_DIGMIC_CH0 (1 << 8) #define AUD_CHANNEL_MAP_DIGMIC_CH1 (1 << 9) #define AUD_CHANNEL_MAP_DIGMIC_CH2 (1 << 10) #define AUD_CHANNEL_MAP_DIGMIC_CH3 (1 << 11) #define AUD_CHANNEL_MAP_DIGMIC_CH4 (1 << 12) #define AUD_CHANNEL_MAP_DIGMIC_CH5 (1 << 13) #define AUD_CHANNEL_MAP_DIGMIC_CH6 (1 << 14) #define AUD_CHANNEL_MAP_DIGMIC_CH7 (1 << 15) #define AUD_CHANNEL_MAP_ECMIC_CH0 (1 << 16) #define AUD_CHANNEL_MAP_ECMIC_CH1 (1 << 17) #define AUD_CHANNEL_MAP_ANA_ALL (0x000000FF) #define AUD_CHANNEL_MAP_DIGMIC_ALL (0x0000FF00) #define AUD_CHANNEL_MAP_NORMAL_ALL (0x0000FFFF) #define AUD_CHANNEL_MAP_ALL (0x0003FFFF) enum AUD_CHANNEL_MAP_T { AUD_CHANNEL_MAP_END = AUD_CHANNEL_MAP_ECMIC_CH1, }; enum AUD_VMIC_MAP_T { AUD_VMIC_MAP_VMIC1 = (AUD_CHANNEL_MAP_END << 1), AUD_VMIC_MAP_VMIC2 = (AUD_CHANNEL_MAP_END << 2), AUD_VMIC_MAP_VMIC3 = (AUD_CHANNEL_MAP_END << 3), AUD_VMIC_MAP_VMIC4 = (AUD_CHANNEL_MAP_END << 4), AUD_VMIC_MAP_VMIC5 = (AUD_CHANNEL_MAP_END << 5), }; enum AUD_BITS_T { AUD_BITS_NULL = 0, AUD_BITS_8 = 8, AUD_BITS_12 = 12, AUD_BITS_16 = 16, AUD_BITS_20 = 20, AUD_BITS_24 = 24, AUD_BITS_32 = 32, }; enum AUD_STREAM_ID_T { AUD_STREAM_ID_0 = 0, AUD_STREAM_ID_1, AUD_STREAM_ID_2, #ifdef __ANC_ASSIST__ AUD_STREAM_ID_3, #endif AUD_STREAM_ID_NUM, }; enum AUD_STREAM_T { AUD_STREAM_PLAYBACK = 0, AUD_STREAM_CAPTURE, AUD_STREAM_NUM, }; // TODO: Need rename enum AUD_IO_PATH_T { AUD_IO_PATH_NULL = 0, // Input path AUD_INPUT_PATH_MAINMIC, // Main User Mic AUD_INPUT_PATH_VADMIC, // Voice Activity Detection AUD_INPUT_PATH_ASRMIC, // Ambient Sound Reduction? (? Is this the external mic?) AUD_INPUT_PATH_LINEIN, AUD_INPUT_PATH_NTMIC, AUD_INPUT_PATH_ANC_WNR, // Wind Noise Reduction AUD_INPUT_PATH_USBAUDIO, #ifdef __ANC_ASSIST__ AUD_INPUT_PATH_AF_ANC, #endif // Output path AUD_OUTPUT_PATH_SPEAKER, }; struct AUD_IO_PATH_CFG_T { enum AUD_IO_PATH_T io_path; unsigned int cfg; }; enum ANC_TYPE_T { ANC_NOTYPE = (1 << 0), ANC_FEEDFORWARD=(1 << 1), ANC_FEEDBACK=(1 << 2), ANC_TALKTHRU=(1 << 3), ANC_MUSICCANCLE=(1 << 4), }; struct CODEC_DAC_VOL_T { signed char tx_pa_gain :6; unsigned char sdm_gain :2; signed char sdac_volume; }; typedef signed char CODEC_ADC_VOL_T; enum TGT_VOLUME_LEVEL_T { TGT_VOLUME_LEVEL_WARNINGTONE = 0, TGT_VOLUME_LEVEL_MUTE, TGT_VOLUME_LEVEL_0, TGT_VOLUME_LEVEL_1, TGT_VOLUME_LEVEL_2, TGT_VOLUME_LEVEL_3, TGT_VOLUME_LEVEL_4, TGT_VOLUME_LEVEL_5, TGT_VOLUME_LEVEL_6, TGT_VOLUME_LEVEL_7, TGT_VOLUME_LEVEL_8, TGT_VOLUME_LEVEL_9, TGT_VOLUME_LEVEL_10, TGT_VOLUME_LEVEL_11, TGT_VOLUME_LEVEL_12, TGT_VOLUME_LEVEL_13, TGT_VOLUME_LEVEL_14, TGT_VOLUME_LEVEL_15, TGT_VOLUME_LEVEL_QTY }; enum TGT_ADC_VOL_LEVEL_T { TGT_ADC_VOL_LEVEL_0, TGT_ADC_VOL_LEVEL_1, TGT_ADC_VOL_LEVEL_2, TGT_ADC_VOL_LEVEL_3, TGT_ADC_VOL_LEVEL_4, TGT_ADC_VOL_LEVEL_5, TGT_ADC_VOL_LEVEL_6, TGT_ADC_VOL_LEVEL_7, TGT_ADC_VOL_LEVEL_8, TGT_ADC_VOL_LEVEL_9, TGT_ADC_VOL_LEVEL_10, TGT_ADC_VOL_LEVEL_11, TGT_ADC_VOL_LEVEL_12, TGT_ADC_VOL_LEVEL_13, TGT_ADC_VOL_LEVEL_14, TGT_ADC_VOL_LEVEL_15, TGT_ADC_VOL_LEVEL_QTY }; typedef void (*AUD_VAD_CALLBACK)(int found); enum AUD_VAD_TYPE_T { AUD_VAD_TYPE_NONE = 0, AUD_VAD_TYPE_MIX, AUD_VAD_TYPE_DIG, AUD_VAD_TYPE_ANA, AUD_VAD_TYPE_NUM, }; struct AUD_VAD_CONFIG_T { enum AUD_VAD_TYPE_T type; enum AUD_SAMPRATE_T sample_rate; enum AUD_BITS_T bits; AUD_VAD_CALLBACK handler; uint8_t udc; uint8_t upre; uint8_t frame_len; uint8_t mvad; uint8_t dig_mode; uint8_t pre_gain; uint8_t sth; uint8_t dc_bypass; uint8_t ds_bypass; uint8_t pre_bypass; uint8_t adc_gain; uint16_t range[4]; uint32_t frame_th[3]; uint32_t psd_th[2]; }; struct CODEC_VAD_BUF_INFO_T { uint32_t base_addr; uint32_t buf_size; uint32_t data_count; uint32_t addr_count; }; #ifdef __cplusplus } #endif #endif /* AUDIO_DEF_H */