ESP-IDF Firmware
Firmware architecture and call graph
Loading...
Searching...
No Matches
dsps_firmr_f32_ansi.c
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
8
9
#include "
dsps_fir.h
"
10
#include "
dsp_common.h
"
11
#include <malloc.h>
12
#include "
dsp_tests.h
"
13
14
int
dsps_firmr_f32_ansi
(
fir_f32_t
*fir,
const
float
*input,
float
*output,
int
input_len)
15
{
16
int
m
= fir->
start_pos
;
17
int
result = 0;
18
19
for
(
int
i = 0; i < input_len; i++) {
20
fir->
delay
[fir->
pos
] = input[i];
21
22
for
(
m
= fir->
start_pos
;
m < fir->
interp;
m
+= fir->
decim
) {
23
float
fir_sum = 0;
24
int
coeff_pos = 0;
25
for
(
int
n
= fir->
pos
;
n < fir->
delay_size;
n
++) {
26
fir_sum += fir->
delay
[
n
] * fir->
coeffs
[coeff_pos++ * fir->
interp
+
m
];
27
}
28
for
(
int
n
= 0;
n
< fir->
pos
;
n
++) {
29
fir_sum += fir->
delay
[
n
] * fir->
coeffs
[coeff_pos++ * fir->
interp
+
m
];
30
}
31
output[result++] = fir_sum;
32
}
33
fir->
start_pos
=
m
- fir->
interp
;
34
35
fir->
pos
--;
36
if
(fir->
pos
< 0) {
37
fir->
pos
= fir->
delay_size
- 1;
38
}
39
}
40
return
result;
41
}
dsp_common.h
dsp_tests.h
dsps_fir.h
fir_f32_t
struct fir_f32_s fir_f32_t
Data struct of f32 fir filter.
dsps_firmr_f32_ansi
int dsps_firmr_f32_ansi(fir_f32_t *fir, const float *input, float *output, int input_len)
32 bit floating point multi-rate FIR filter
Definition
dsps_firmr_f32_ansi.c:14
fir_f32_s::interp
int interp
Definition
dsps_fir.h:42
fir_f32_s::coeffs
float * coeffs
Definition
dsps_fir.h:30
fir_f32_s::pos
int pos
Definition
dsps_fir.h:33
fir_f32_s::delay
float * delay
Definition
dsps_fir.h:31
fir_f32_s::start_pos
int start_pos
Definition
dsps_fir.h:44
fir_f32_s::delay_size
int delay_size
Interpolation parameters.
Definition
dsps_fir.h:41
fir_f32_s::decim
int decim
Definition
dsps_fir.h:34
m
const int m
Definition
test_mmult.c:16
n
const int n
Definition
test_mmult.c:17
components
espressif__esp-dsp
modules
fir
float
dsps_firmr_f32_ansi.c
Generated by
1.16.1