



/********************************************************
                 SV_Frame.h
*********************************************************/

#define BUFSIZE 320

/*----------------------------------------*/
/*            BAND type                   */
/*----------------------------------------*/
#define SVTX_NB_ENABLE	1
#define SVTX_WB_ENABLE	1
#define SVTX_SWB_ENABLE	0
#define SVTX_FB_ENABLE	0


/*----------------------------------------*/
/*            frame structure             */
/*----------------------------------------*/
#define SVTX_NB_FRM_SIZE			160
#define SVTX_NB_HOP_SIZE			160
#define SVTX_NB_WIN_SIZE			256
#define SVTX_NB_FFT_SIZE			256
#define SVTX_NB_OVERLAP_SIZE		(SVTX_NB_WIN_SIZE-SVTX_NB_HOP_SIZE)
#define SVTX_NB_HFFT_SIZE			(SVTX_NB_FFT_SIZE>>1)

#define SVTX_WB_FRM_SIZE			320
#define SVTX_WB_HOP_SIZE			320
#define SVTX_WB_WIN_SIZE			512
#define SVTX_WB_FFT_SIZE			512
#define SVTX_WB_OVERLAP_SIZE		(SVTX_WB_WIN_SIZE-SVTX_WB_HOP_SIZE)
#define SVTX_WB_HFFT_SIZE			(SVTX_WB_FFT_SIZE>>1)

#define SVTX_SWB_FRM_SIZE			640
#define SVTX_SWB_HOP_SIZE			640
#define SVTX_SWB_WIN_SIZE			1024
#define SVTX_SWB_FFT_SIZE			1024
#define SVTX_SWB_OVERLAP_SIZE		(SVTX_SWB_WIN_SIZE-SVTX_SWB_HOP_SIZE)
#define SVTX_SWB_HFFT_SIZE			(SVTX_SWB_FFT_SIZE>>1)

#define SVTX_FB_FRM_SIZE			960
#define SVTX_FB_HOP_SIZE			960
#define SVTX_FB_WIN_SIZE			1536
#define SVTX_FB_FFT_SIZE			2048
#define SVTX_FB_OVERLAP_SIZE		(SVTX_FB_WIN_SIZE-SVTX_FB_HOP_SIZE)
#define SVTX_FB_HFFT_SIZE			(SVTX_FB_FFT_SIZE>>1)

#define SVTX_MAX_FRM_SIZE			(SVTX_FB_ENABLE?SVTX_FB_FRM_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_FRM_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_FRM_SIZE:SVTX_NB_FRM_SIZE)))
#define SVTX_MAX_HOP_SIZE			(SVTX_FB_ENABLE?SVTX_FB_HOP_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_HOP_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_HOP_SIZE:SVTX_NB_HOP_SIZE)))
#define SVTX_MAX_WIN_SIZE			(SVTX_FB_ENABLE?SVTX_FB_WIN_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_WIN_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_WIN_SIZE:SVTX_NB_WIN_SIZE)))
#define SVTX_MAX_FFT_SIZE			(SVTX_FB_ENABLE?SVTX_FB_FFT_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_FFT_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_FFT_SIZE:SVTX_NB_FFT_SIZE)))
#define SVTX_MAX_OVERLAP_SIZE		(SVTX_FB_ENABLE?SVTX_FB_OVERLAP_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_OVERLAP_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_OVERLAP_SIZE:SVTX_NB_OVERLAP_SIZE)))
#define SVTX_MAX_HFFT_SIZE			(SVTX_FB_ENABLE?SVTX_FB_HFFT_SIZE: \
								(SVTX_SWB_ENABLE?SVTX_SWB_HFFT_SIZE:\
								(SVTX_WB_ENABLE?SVTX_WB_HFFT_SIZE:SVTX_NB_HFFT_SIZE)))

/*----------------------------------------*/
/*        input signal configuration      */
/*----------------------------------------*/
#define SVTX_MAX_MIC_NUM 4
#define SVTX_MAX_SPK_NUM 1

typedef enum BAND_TYPE_ { NB, WB, SWB, FB } BAND_TYPE;

typedef enum CHANNEL_INF_ { MAIN_CH, AUX_CH, INEAR_CH, ACC_CH } CHANNEL_INF;


// Processing
extern void SV_Frame_Exe(int* Out_buf, const int* Outer1_buf, const int* Outer2_buf, const int* Inner_buf, const int* Rx_buf, const int* Acc_buf, int n);
// Out_buf - output PCM data 32bit (Q15 format)
// Outer1_buf, Outer2_buf, Inner_buf, Rx_buf, Acc_buf - input PCM data 32bit (Q15 format)
// n - number of samples in each channel (number of samples in one channel)

// Initialization
extern void SV_Frame_Init(int Fs);
// Fs - {8000, 16000}

extern void SV_Frame_Deinit();
