mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-15 21:01:45 -05:00
libfreedv: do not taek comp_prim.h from Codec2 library
This commit is contained in:
parent
d3030b37eb
commit
7d9d53c4f0
@ -26,6 +26,7 @@ set(freedv_HEADERS
|
|||||||
codec2_ofdm.h
|
codec2_ofdm.h
|
||||||
cohpsk_defs.h
|
cohpsk_defs.h
|
||||||
cohpsk_internal.h
|
cohpsk_internal.h
|
||||||
|
comp_prim.h
|
||||||
defines.h
|
defines.h
|
||||||
fdmdv_internal.h
|
fdmdv_internal.h
|
||||||
fdv_arm_math.h
|
fdv_arm_math.h
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
#include "cohpsk_internal.h"
|
#include "cohpsk_internal.h"
|
||||||
#include "fdmdv_internal.h"
|
#include "fdmdv_internal.h"
|
||||||
#include "pilots_coh.h"
|
#include "pilots_coh.h"
|
||||||
#include "codec2/comp_prim.h"
|
#include "comp_prim.h"
|
||||||
#include "kiss_fft.h"
|
#include "kiss_fft.h"
|
||||||
#include "linreg.h"
|
#include "linreg.h"
|
||||||
#include "rn_coh.h"
|
#include "rn_coh.h"
|
||||||
|
149
libfreedv/comp_prim.h
Normal file
149
libfreedv/comp_prim.h
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
|
||||||
|
FILE........: comp_prim.h
|
||||||
|
AUTHOR......: David Rowe
|
||||||
|
DATE CREATED: Marh 2015
|
||||||
|
|
||||||
|
Complex number maths primitives.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright (C) 2015 David Rowe
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU Lesser General Public License version 2.1, as
|
||||||
|
published by the Free Software Foundation. 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 Lesser General Public License
|
||||||
|
along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __COMP_PRIM__
|
||||||
|
#define __COMP_PRIM__
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
#include "codec2/comp.h"
|
||||||
|
|
||||||
|
namespace FreeDV
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
|
||||||
|
FUNCTIONS
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
inline static COMP cneg(COMP a)
|
||||||
|
{
|
||||||
|
COMP res;
|
||||||
|
|
||||||
|
res.real = -a.real;
|
||||||
|
res.imag = -a.imag;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static COMP cconj(COMP a)
|
||||||
|
{
|
||||||
|
COMP res;
|
||||||
|
|
||||||
|
res.real = a.real;
|
||||||
|
res.imag = -a.imag;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static COMP cmult(COMP a, COMP b)
|
||||||
|
{
|
||||||
|
COMP res;
|
||||||
|
|
||||||
|
res.real = a.real*b.real - a.imag*b.imag;
|
||||||
|
res.imag = a.real*b.imag + a.imag*b.real;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static COMP fcmult(float a, COMP b)
|
||||||
|
{
|
||||||
|
COMP res;
|
||||||
|
|
||||||
|
res.real = a*b.real;
|
||||||
|
res.imag = a*b.imag;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static COMP cadd(COMP a, COMP b)
|
||||||
|
{
|
||||||
|
COMP res;
|
||||||
|
|
||||||
|
res.real = a.real + b.real;
|
||||||
|
res.imag = a.imag + b.imag;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static float cabsolute(COMP a)
|
||||||
|
{
|
||||||
|
return sqrt(pow(a.real, 2.0) + pow(a.imag, 2.0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Euler's formula in a new convenient function
|
||||||
|
*/
|
||||||
|
inline static COMP comp_exp_j(float phi){
|
||||||
|
COMP res;
|
||||||
|
res.real = cosf(phi);
|
||||||
|
res.imag = sinf(phi);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Quick and easy complex 0
|
||||||
|
*/
|
||||||
|
inline static COMP comp0(){
|
||||||
|
COMP res;
|
||||||
|
res.real = 0;
|
||||||
|
res.imag = 0;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Quick and easy complex subtract
|
||||||
|
*/
|
||||||
|
inline static COMP csub(COMP a, COMP b){
|
||||||
|
COMP res;
|
||||||
|
res.real = a.real-b.real;
|
||||||
|
res.imag = a.imag-b.imag;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compare the magnitude of a and b. if |a|>|b|, return true, otw false.
|
||||||
|
* This needs no square roots
|
||||||
|
*/
|
||||||
|
inline static int comp_mag_gt(COMP a,COMP b){
|
||||||
|
return ((a.real*a.real)+(a.imag*a.imag)) > ((b.real*b.real)+(b.imag*b.imag));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Normalize a complex number's magnitude to 1
|
||||||
|
*/
|
||||||
|
inline static COMP comp_normalize(COMP a){
|
||||||
|
COMP b;
|
||||||
|
float av = cabsolute(a);
|
||||||
|
b.real = a.real/av;
|
||||||
|
b.imag = a.imag/av;
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // FreeDV
|
||||||
|
|
||||||
|
#endif
|
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
#include "fdmdv_internal.h"
|
#include "fdmdv_internal.h"
|
||||||
#include "codec2_fdmdv.h"
|
#include "codec2_fdmdv.h"
|
||||||
#include "codec2/comp_prim.h"
|
#include "comp_prim.h"
|
||||||
#include "rn.h"
|
#include "rn.h"
|
||||||
#include "rxdec_coeff.h"
|
#include "rxdec_coeff.h"
|
||||||
#include "test_bits.h"
|
#include "test_bits.h"
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
#include "libfreedv.h"
|
#include "libfreedv.h"
|
||||||
#include "freedv_api_internal.h"
|
#include "freedv_api_internal.h"
|
||||||
#include "freedv_vhf_framing.h"
|
#include "freedv_vhf_framing.h"
|
||||||
#include "codec2/comp_prim.h"
|
#include "comp_prim.h"
|
||||||
#include "freedv_filter.h"
|
#include "freedv_filter.h"
|
||||||
|
|
||||||
#include "codec2_ofdm.h"
|
#include "codec2_ofdm.h"
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "fsk.h"
|
#include "fsk.h"
|
||||||
#include "codec2/comp_prim.h"
|
#include "comp_prim.h"
|
||||||
#include "kiss_fftr.h"
|
#include "kiss_fftr.h"
|
||||||
#include "modem_probe.h"
|
#include "modem_probe.h"
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "linreg.h"
|
#include "linreg.h"
|
||||||
#include "codec2/comp_prim.h"
|
#include "comp_prim.h"
|
||||||
|
|
||||||
namespace FreeDV
|
namespace FreeDV
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user