kopia lustrzana https://github.com/rs1729/RS
demod: lowpass reorder speedup
rodzic
df5ddc2872
commit
02a0fba03f
|
@ -274,13 +274,13 @@ static int lowpass_init(float f, int taps, float **pws) {
|
|||
}
|
||||
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int S = taps-1 - (sample % taps);
|
||||
for (n = 0; n < taps; n++) {
|
||||
w += buffer[n]*ws[taps+s-n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
|
||||
w += buffer[n]*ws[S+n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
|
||||
}
|
||||
return (float complex)w;
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
|
||||
|
|
|
@ -465,7 +465,7 @@ static int f32read_cblock(dsp_t *dsp) {
|
|||
int n;
|
||||
int len;
|
||||
float x, y;
|
||||
ui8_t s[4*2*dsp->decM]; //uin8,int16,flot32
|
||||
ui8_t s[4*2*dsp->decM]; //uin8,int16,float32
|
||||
ui8_t *u = (ui8_t*)s;
|
||||
short *b = (short*)s;
|
||||
float *f = (float*)s;
|
||||
|
@ -625,7 +625,7 @@ static float complex lowpass0(float complex buffer[], ui32_t sample, ui32_t taps
|
|||
}
|
||||
return (float complex)w;
|
||||
}
|
||||
static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
static float complex lowpass1d(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
ui32_t n;
|
||||
ui32_t s = sample % taps;
|
||||
double complex w = 0;
|
||||
|
@ -635,7 +635,19 @@ static float complex lowpass1(float complex buffer[], ui32_t sample, ui32_t taps
|
|||
return (float complex)w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
//static __attribute__((optimize("-ffast-math"))) float complex lowpass1bf()
|
||||
static float complex lowpass(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int S = taps-1 - (sample % taps);
|
||||
for (n = 0; n < taps; n++) {
|
||||
w += buffer[n]*ws[S+n]; // ws[taps+s-n] = ws[(taps+sample-n)%taps]
|
||||
}
|
||||
return w;
|
||||
// symmetry: ws[n] == ws[taps-1-n]
|
||||
}
|
||||
//static __attribute__((optimize("-ffast-math"))) float complex lowpass2()
|
||||
static float complex lowpass2(float complex buffer[], ui32_t sample, ui32_t taps, float *ws) {
|
||||
float complex w = 0; // -Ofast
|
||||
int n;
|
||||
int s = sample % taps; // lpIQ
|
||||
|
|
Ładowanie…
Reference in New Issue