Updates Windows liquid-dsp binaries to v1.4.0:

- Win32/64 bins liquid-dsp ref: 3b8a6f07ba6780b7a3d4be148461257515d183ad (tag: v1.4.0)
- Win32/64 bins using GCC 11.2 (MSYS2)
This commit is contained in:
vsonnier
2022-02-03 19:18:08 +01:00
parent f461fcb94c
commit bbc2e974de
18 changed files with 5131 additions and 4961 deletions
+103 -27
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2007 - 2021 Joseph Gaeddert
* Copyright (c) 2007 - 2022 Joseph Gaeddert
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@@ -54,8 +54,8 @@ extern "C" {
// LIQUID_VERSION = "X.Y.Z"
// LIQUID_VERSION_NUMBER = (X*1000000 + Y*1000 + Z)
//
#define LIQUID_VERSION "1.3.2"
#define LIQUID_VERSION_NUMBER 1003002
#define LIQUID_VERSION "1.4.0"
#define LIQUID_VERSION_NUMBER 1004000
//
// Run-time library version numbers
@@ -153,6 +153,15 @@ const char * liquid_error_info(liquid_error_code _code);
LIQUID_DEFINE_COMPLEX(float, liquid_float_complex);
LIQUID_DEFINE_COMPLEX(double, liquid_double_complex);
// external compile-time deprecation warnings with messages
#ifdef __GNUC__
# define DEPRECATED(MSG,X) X __attribute__((deprecated (MSG)))
#elif defined(_MSC_VER)
# define DEPRECATED(MSG,X) __declspec(deprecated) X
#else
# define DEPRECATED(MSG,X) X
#endif
//
// MODULE : agc (automatic gain control)
//
@@ -918,6 +927,14 @@ EQLMS() EQLMS(_create_rnyquist)(int _type, \
EQLMS() EQLMS(_create_lowpass)(unsigned int _n, \
float _fc); \
\
/* Recreate LMS EQ initialized with external coefficients */ \
/* _q : old equalization object */ \
/* _h : filter coefficients; set to NULL for {1,0,0...},[size: _n x 1] */ \
/* _n : filter length */ \
EQLMS() EQLMS(_recreate)(EQLMS() _q, \
T * _h, \
unsigned int _n); \
\
/* Destroy equalizer object, freeing all internal memory */ \
int EQLMS(_destroy)(EQLMS() _q); \
\
@@ -936,6 +953,26 @@ float EQLMS(_get_bw)(EQLMS() _q); \
int EQLMS(_set_bw)(EQLMS() _q, \
float _lambda); \
\
/* Get length of equalizer object (number of internal coefficients) */ \
unsigned int EQLMS(_get_length)(EQLMS() _q); \
\
/* Get pointer to coefficients array */ \
const T * EQLMS(_get_coefficients)(EQLMS() _q); \
\
/* Copy internal coefficients to external buffer */ \
/* _q : filter object */ \
/* _w : pointer to output coefficients array [size: _n x 1] */ \
int EQLMS(_copy_coefficients)(EQLMS() _q, \
T * _w); \
\
/* Get equalizer's internal coefficients */ \
/* _q : filter object */ \
/* _w : pointer to output coefficients array [size: _n x 1] */ \
DEPRECATED("use eqlms_xxxt_copy_coefficients(...) instead", \
void EQLMS(_get_weights)(EQLMS() _q, \
T * _w) \
); \
\
/* Push sample into equalizer internal buffer */ \
/* _q : equalizer object */ \
/* _x : input sample */ \
@@ -994,23 +1031,19 @@ int EQLMS(_step)(EQLMS() _q, \
int EQLMS(_step_blind)(EQLMS() _q, \
T _d_hat); \
\
/* Get equalizer's internal coefficients */ \
/* _q : equalizer object */ \
/* _w : weights, [size: _p x 1] */ \
int EQLMS(_get_weights)(EQLMS() _q, \
T * _w); \
\
/* Train equalizer object on group of samples */ \
/* _q : equalizer object */ \
/* _w : input/output weights, [size: _p x 1] */ \
/* _x : received sample vector,[size: _n x 1] */ \
/* _d : desired output vector, [size: _n x 1] */ \
/* _n : input, output vector length */ \
DEPRECATED("method provides complexity with little benefit", \
int EQLMS(_train)(EQLMS() _q, \
T * _w, \
T * _x, \
T * _d, \
unsigned int _n); \
unsigned int _n) \
); \
LIQUID_EQLMS_DEFINE_API(LIQUID_EQLMS_MANGLE_RRRF, float)
LIQUID_EQLMS_DEFINE_API(LIQUID_EQLMS_MANGLE_CCCF, liquid_float_complex)
@@ -5381,13 +5414,15 @@ int fskframesync_debug_export (fskframesync _q, const char * _filename);
typedef struct gmskframegen_s * gmskframegen;
// create GMSK frame generator
// create GMSK frame generator with specific parameters
// _k : samples/symbol
// _m : filter delay (symbols)
// _BT : excess bandwidth factor
gmskframegen gmskframegen_create(unsigned int _k,
unsigned int _m,
float _BT);
gmskframegen gmskframegen_create_set(unsigned int _k,
unsigned int _m,
float _BT);
// create default GMSK frame generator (k=2, m=3, BT=0.5)
gmskframegen gmskframegen_create();
int gmskframegen_destroy (gmskframegen _q);
int gmskframegen_is_assembled (gmskframegen _q);
int gmskframegen_print (gmskframegen _q);
@@ -5406,12 +5441,20 @@ int gmskframegen_assemble_default(gmskframegen _q,
unsigned int gmskframegen_getframelen(gmskframegen _q);
// write samples of assembled frame
// _q : frame generator object
// _buf : output buffer [size: _buf_len x 1]
// _buf_len : output buffer length
int gmskframegen_write(gmskframegen _q,
liquid_float_complex * _buf,
unsigned int _buf_len);
// _q : frame generator object
// _buf : output buffer [size: _buf_len x 1]
// _buf_len : output buffer length
int gmskframegen_write(gmskframegen _q,
liquid_float_complex * _buf,
unsigned int _buf_len);
// write samples of assembled frame
// _q : frame generator object
// _buf : output buffer [size: k x 1]
DEPRECATED("use gmskframegen_write(...) instead",
int gmskframegen_write_samples(gmskframegen _q,
liquid_float_complex * _buf)
);
//
@@ -5426,10 +5469,15 @@ typedef struct gmskframesync_s * gmskframesync;
// _BT : excess bandwidth factor
// _callback : callback function
// _userdata : user data pointer passed to callback function
gmskframesync gmskframesync_create(unsigned int _k,
unsigned int _m,
float _BT,
framesync_callback _callback,
gmskframesync gmskframesync_create_set(unsigned int _k,
unsigned int _m,
float _BT,
framesync_callback _callback,
void * _userdata);
// create GMSK frame synchronizer with default parameters (k=2, m=3, BT=0.5)
// _callback : callback function
// _userdata : user data pointer passed to callback function
gmskframesync gmskframesync_create(framesync_callback _callback,
void * _userdata);
int gmskframesync_destroy(gmskframesync _q);
int gmskframesync_print(gmskframesync _q);
@@ -5443,6 +5491,14 @@ int gmskframesync_execute(gmskframesync _q,
int gmskframesync_reset_framedatastats(gmskframesync _q);
framedatastats_s gmskframesync_get_framedatastats (gmskframesync _q);
// debug methods
DEPRECATED("debug methods add complexity and provide little value",
int gmskframesync_debug_enable(gmskframesync _q) );
DEPRECATED("debug methods add complexity and provide little value",
int gmskframesync_debug_disable(gmskframesync _q) );
DEPRECATED("debug methods add complexity and provide little value",
int gmskframesync_debug_print(gmskframesync _q, const char * _filename) );
//
// DSSS frame generator
@@ -6528,6 +6584,18 @@ int liquid_kbd_window(unsigned int _wlen,
float _beta,
float * _w);
// shim to support legacy APIs (backwards compatible with 1.3.2)
float kaiser(unsigned int _i,unsigned int _wlen, float _beta, float _dt);
float hamming(unsigned int _i,unsigned int _wlen);
float hann(unsigned int _i,unsigned int _wlen);
float blackmanharris(unsigned int _i,unsigned int _wlen);
float blackmanharris7(unsigned int _i,unsigned int _wlen);
float flattop(unsigned int _i,unsigned int _wlen);
float triangular(unsigned int _i,unsigned int _wlen,unsigned int _L);
float liquid_rcostaper_windowf(unsigned int _i,unsigned int _wlen,unsigned int _t);
float kbd(unsigned int _i,unsigned int _wlen,float _beta);
int kbd_window(unsigned int _wlen,float _beta,float * _w);
// polynomials
@@ -7275,7 +7343,7 @@ int smatrixb_vmulf(smatrixb _q,
#define MAX_MOD_BITS_PER_SYMBOL 8
// Modulation schemes available
#define LIQUID_MODEM_NUM_SCHEMES (52)
#define LIQUID_MODEM_NUM_SCHEMES (53)
typedef enum {
LIQUID_MODEM_UNKNOWN=0, // Unknown modulation scheme
@@ -7323,6 +7391,7 @@ typedef enum {
LIQUID_MODEM_ARB128OPT, // optimal 128-QAM
LIQUID_MODEM_ARB256OPT, // optimal 256-QAM
LIQUID_MODEM_ARB64VT, // Virginia Tech logo
LIQUID_MODEM_PI4DQPSK, // pi/4 differential QPSK
// arbitrary modem type
LIQUID_MODEM_ARB // arbitrary QAM
@@ -7394,6 +7463,12 @@ int liquid_unpack_soft_bits(unsigned int _sym_in,
//
#define LIQUID_MODEM_MANGLE_FLOAT(name) LIQUID_CONCAT(modemcf,name)
// temporary shim to support backwards compatibility between "modemcf" and "modem"
#define LIQUID_MODEM_MANGLE_FLOAT_SHIM(name) LIQUID_CONCAT(modem,name)
// FIXME: need to point both modem and modemcf pointers to same struct (shim)
typedef struct modemcf_s * modemcf;
typedef struct modemcf_s * modem;
// Macro : MODEM
// MODEM : name-mangling macro
@@ -7402,7 +7477,8 @@ int liquid_unpack_soft_bits(unsigned int _sym_in,
#define LIQUID_MODEM_DEFINE_API(MODEM,T,TC) \
\
/* Linear modulator/demodulator (modem) object */ \
typedef struct MODEM(_s) * MODEM(); \
/* FIXME: need to point both modem and modemcf pointers to same struct */ \
/*typedef struct MODEM(_s) * MODEM(); */ \
\
/* Create digital modem object with a particular scheme */ \
/* _scheme : linear modulation scheme (e.g. LIQUID_MODEM_QPSK) */ \
@@ -7494,7 +7570,7 @@ float MODEM(_get_demodulator_evm)(MODEM() _q); \
// define modem APIs
LIQUID_MODEM_DEFINE_API(LIQUID_MODEM_MANGLE_FLOAT,float,liquid_float_complex)
LIQUID_MODEM_DEFINE_API(LIQUID_MODEM_MANGLE_FLOAT_SHIM,float,liquid_float_complex)
//
// continuous-phase modulation