mirror of
https://git.vladimir.cc/vladimir/wdsp.git
synced 2026-08-25 17:27:33 +00:00
first commit
This commit is contained in:
@@ -0,0 +1,221 @@
|
||||
/* emnr.h
|
||||
|
||||
This file is part of a program that implements a Software-Defined Radio.
|
||||
|
||||
Copyright (C) 2015 Warren Pratt, NR0V
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
The author can be reached by email at
|
||||
|
||||
warren@wpratt.com
|
||||
|
||||
*/
|
||||
|
||||
#ifndef _emnr_h
|
||||
#define _emnr_h
|
||||
|
||||
typedef struct _emnr
|
||||
{
|
||||
int run;
|
||||
int position;
|
||||
int bsize;
|
||||
double* in;
|
||||
double* out;
|
||||
int fsize;
|
||||
int ovrlp;
|
||||
int incr;
|
||||
double* window;
|
||||
int iasize;
|
||||
double* inaccum;
|
||||
double* forfftin;
|
||||
double* forfftout;
|
||||
int msize;
|
||||
double* mask;
|
||||
double* revfftin;
|
||||
double* revfftout;
|
||||
double** save;
|
||||
int oasize;
|
||||
double* outaccum;
|
||||
double rate;
|
||||
int wintype;
|
||||
double ogain;
|
||||
double gain;
|
||||
int nsamps;
|
||||
int iainidx;
|
||||
int iaoutidx;
|
||||
int init_oainidx;
|
||||
int oainidx;
|
||||
int oaoutidx;
|
||||
int saveidx;
|
||||
fftw_plan Rfor;
|
||||
fftw_plan Rrev;
|
||||
struct _g
|
||||
{
|
||||
int gain_method;
|
||||
int npe_method;
|
||||
int ae_run;
|
||||
double msize;
|
||||
double* mask;
|
||||
double* y;
|
||||
double* lambda_y;
|
||||
double* lambda_d;
|
||||
double* prev_mask;
|
||||
double* prev_gamma;
|
||||
double gf1p5;
|
||||
double alpha;
|
||||
double eps_floor;
|
||||
double gamma_max;
|
||||
double xi_min;
|
||||
double q;
|
||||
double gmax;
|
||||
//
|
||||
double* GG;
|
||||
double* GGS;
|
||||
FILE* fileb;
|
||||
//
|
||||
int dim_zeta;
|
||||
double* zeta_hat;
|
||||
int* zeta_true;
|
||||
double z_gamma_min;
|
||||
double z_gamma_max;
|
||||
double z_xihat_min;
|
||||
double z_xihat_max;
|
||||
double zeta_thresh;
|
||||
} g;
|
||||
struct _npest
|
||||
{
|
||||
int incr;
|
||||
double rate;
|
||||
int msize;
|
||||
double* lambda_y;
|
||||
double* lambda_d;
|
||||
double* p;
|
||||
double* alphaOptHat;
|
||||
double alphaC;
|
||||
double alphaCsmooth;
|
||||
double alphaCmin;
|
||||
double* alphaHat;
|
||||
double alphaMax;
|
||||
double* sigma2N;
|
||||
double alphaMin_max_value;
|
||||
double snrq;
|
||||
double betamax;
|
||||
double* pbar;
|
||||
double* p2bar;
|
||||
double invQeqMax;
|
||||
double av;
|
||||
double* Qeq;
|
||||
int U;
|
||||
double Dtime;
|
||||
int V;
|
||||
int D;
|
||||
double MofD;
|
||||
double MofV;
|
||||
double* bmin;
|
||||
double* bmin_sub;
|
||||
int* k_mod;
|
||||
double* actmin;
|
||||
double* actmin_sub;
|
||||
int subwc;
|
||||
int* lmin_flag;
|
||||
double* pmin_u;
|
||||
double invQbar_points[4];
|
||||
double nsmax[4];
|
||||
double** actminbuff;
|
||||
int amb_idx;
|
||||
} np;
|
||||
struct _npests
|
||||
{
|
||||
int incr;
|
||||
double rate;
|
||||
int msize;
|
||||
double* lambda_y;
|
||||
double* lambda_d;
|
||||
|
||||
double alpha_pow;
|
||||
double alpha_Pbar;
|
||||
double epsH1;
|
||||
double epsH1r;
|
||||
|
||||
double* sigma2N;
|
||||
double* PH1y;
|
||||
double* Pbar;
|
||||
double* EN2y;
|
||||
} nps;
|
||||
struct _npestl
|
||||
{
|
||||
double rate;
|
||||
int msize;
|
||||
int incr;
|
||||
double* Ysq;
|
||||
double* P;
|
||||
double* Pmin;
|
||||
double* p;
|
||||
double* D;
|
||||
double* lambda_d;
|
||||
|
||||
double eta;
|
||||
double gamma;
|
||||
double beta;
|
||||
double delta_LF;
|
||||
double delta_MF;
|
||||
double delta_0;
|
||||
double delta_1;
|
||||
double delta_2;
|
||||
double alpha_d;
|
||||
double alpha_p;
|
||||
} npl;
|
||||
struct _ae
|
||||
{
|
||||
int msize;
|
||||
double* lambda_y;
|
||||
double zetaThresh;
|
||||
double psi;
|
||||
double* nmask;
|
||||
double t2;
|
||||
} ae;
|
||||
struct _post2
|
||||
{
|
||||
int run;
|
||||
double nlevel;
|
||||
double factor;
|
||||
double taper;
|
||||
double tc_decay;
|
||||
double rate_decay;
|
||||
double* w;
|
||||
int noise_frames;
|
||||
int noise_frame_index;
|
||||
double* noise_frame;
|
||||
double olddmag;
|
||||
} post2;
|
||||
}emnr, *EMNR;
|
||||
|
||||
extern EMNR create_emnr (int run, int position, int size, double* in, double* out, int fsize, int ovrlp,
|
||||
int rate, int wintype, double gain, int gain_method, int npe_method, int ae_run);
|
||||
|
||||
extern void destroy_emnr (EMNR a);
|
||||
|
||||
extern void flush_emnr (EMNR a);
|
||||
|
||||
extern void xemnr (EMNR a, int pos);
|
||||
|
||||
extern void setBuffers_emnr (EMNR a, double* in, double* out);
|
||||
|
||||
extern void setSamplerate_emnr (EMNR a, int rate);
|
||||
|
||||
extern void setSize_emnr (EMNR a, int size);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user