/* * Copyright (C) 2021, Fuzhou Rockchip Electronics Co., Ltd. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Fuzhou Rockchip Electronics Co., Ltd. nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _SKV_LIB_DEFINE_ #define _SKV_LIB_DEFINE_ #define INFO_RIGHT 1 // Succeed initialize SKV preprocessor #define INFO_PARAM_ERROR 2 // Cann't support the parameter of audio that you input #define INFO_EXCEEDDATE_ERROR 3 // Exceed the limited date #define INFO_UNKNOW_ERROR 4 // Unknown error #define FRAME_SIZE 256 #define FRAME_SIZE_PBNLMS 256 #define NUM_PBNLMS_FILTER 4 typedef enum _SkvAECEnable{ AEC_EN_DELAY = 1 << 0, AEC_EN_CHN_MAP = 1 << 1, } SkvAecEnable; typedef enum _SkvBFEnable { BF_EN_FAST_AEC = 1 << 0, BF_EN_WAKEUP = 1 << 1, BF_EN_DEREV = 1 << 2, BF_EN_NLP = 1 << 3, BF_EN_AES = 1 << 4, BF_EN_AGC = 1 << 5, BF_EN_ANR = 1 << 6, BF_EN_GSC = 1 << 7, BF_GSC_METHOD = 1 << 8, BF_EN_FIX = 1 << 9, BF_EN_STDT = 1 << 10, BF_EN_CNG = 1 << 11, BF_EN_EQ = 1 << 12, } SkvBFEnable; typedef enum _SkvRxEnable{ RX_EN_ANR = 1 << 0, } SkvRxEnable; typedef struct _SkvAecParam { int pos; int drop_ref_channel; int aec_mode; int delay_len; int look_ahead; short *mic_chns_map; } SkvAecParam; typedef struct _SkvAnrParam { float noiseFactor; int swU; float psiMin; float psiMax; float fGmin; } SkvAnrParam; typedef struct _SkvAgcParam { float attack_time; float release_time; float max_gain; float max_peak; float fRth0; float fRk0; float fRth1; int fs; int frmlen; float attenuate_time; float fRth2; float fRk1; float fRk2; float fLineGainDb; int swSmL0; int swSmL1; int swSmL2; } SkvAgcParam; typedef struct _SkvDereverbParam { int rlsLg; int curveLg; int delay; float forgetting; float t60; float coCoeff; } SkvDereverbParam; typedef struct _SkvNlpParam { short nlp16k[8][2]; } SkvNlpParam; typedef struct _SkvCngParam{ float fGain; float fMpy; float fSmoothAlpha; float fSpeechGain; } SkvCngParam; typedef struct _SkvDtdParam { float ksiThd_high; float ksiThd_low; } SkvDtdParam; typedef struct _SkvAesParam { float beta_up; float beta_down; } SkvAesParam; typedef struct _SkvEqParam { int shwParaLen; short pfCoeff[5][13]; } SkvEqParam; typedef struct _SkvBeamFormParam { int model_en; int ref_pos; int targ; int num_ref_channel; int drop_ref_channel; SkvDereverbParam* dereverb; SkvAesParam* aes; SkvNlpParam* nlp; SkvAnrParam* anr; SkvAgcParam* agc; SkvCngParam* cng; SkvDtdParam* dtd; SkvEqParam* eq; } SkvBeamFormParam; typedef struct _SkvRxParam { /* Parameters of agc */ int model_en; SkvAnrParam* anr; } SkvRxParam; extern void* rkaudio_preprocess_init(int sampling_rate, int bits_persample, int num_src_channel, int num_ref_channel, void *param); extern void rkaudio_preprocess_destory(void *handle); extern int rkaudio_preprocess_short(void *handle, short *in, short *out, int in_size, int *is_wakeup); extern void rkaudio_param_printf(int mic, int ref, void *param); #endif // _SKV_LIB_DEFINE_