Skip to content

Commit a3c02b2

Browse files
audio: eq_fir: clarify FIR processing variable names
Replace abbreviated local variable names with descriptive names across the generic, HiFi2EP, and HiFi3 EQ FIR implementations. Clarify channel, sample, pointer, filter, and stride handling without changing processing behavior. Signed-off-by: Piotr Hoppe <piotr.hoppe@intel.com>
1 parent d651056 commit a3c02b2

3 files changed

Lines changed: 343 additions & 307 deletions

File tree

‎src/audio/eq_fir/eq_fir_generic.c‎

Lines changed: 76 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -26,33 +26,37 @@ void eq_fir_s16(struct fir_state_32x16 fir[], struct cir_buf_source *source,
2626
struct cir_buf_sink *sink, int frames, int channels)
2727
{
2828
struct fir_state_32x16 *filter;
29-
int32_t z;
30-
const int16_t *x0;
31-
int16_t *y0;
32-
const int16_t *x = source->ptr;
33-
int16_t *y = sink->ptr;
34-
int nmax, n, i, j;
29+
int32_t filtered_sample;
30+
const int16_t *src_channel;
31+
int16_t *dst_channel;
32+
const int16_t *src = source->ptr;
33+
int16_t *dst = sink->ptr;
34+
int max_samples;
35+
int chunk_samples;
36+
int sample_index;
37+
int channel;
3538
int remaining_samples = frames * channels;
3639

3740
while (remaining_samples) {
38-
nmax = cir_buf_samples_without_wrap_s16(x, source->buf_end);
39-
n = MIN(remaining_samples, nmax);
40-
nmax = cir_buf_samples_without_wrap_s16(y, sink->buf_end);
41-
n = MIN(n, nmax);
42-
for (j = 0; j < channels; j++) {
43-
x0 = x + j;
44-
y0 = y + j;
45-
filter = &fir[j];
46-
for (i = 0; i < n; i += channels) {
47-
z = fir_32x16(filter, *x0 << 16);
48-
*y0 = sat_int16(Q_SHIFT_RND(z, 31, 15));
49-
x0 += channels;
50-
y0 += channels;
41+
max_samples = cir_buf_samples_without_wrap_s16(src, source->buf_end);
42+
chunk_samples = MIN(remaining_samples, max_samples);
43+
max_samples = cir_buf_samples_without_wrap_s16(dst, sink->buf_end);
44+
chunk_samples = MIN(chunk_samples, max_samples);
45+
for (channel = 0; channel < channels; channel++) {
46+
src_channel = src + channel;
47+
dst_channel = dst + channel;
48+
filter = &fir[channel];
49+
for (sample_index = 0; sample_index < chunk_samples;
50+
sample_index += channels) {
51+
filtered_sample = fir_32x16(filter, *src_channel << 16);
52+
*dst_channel = sat_int16(Q_SHIFT_RND(filtered_sample, 31, 15));
53+
src_channel += channels;
54+
dst_channel += channels;
5155
}
5256
}
53-
remaining_samples -= n;
54-
x = source_cir_buf_wrap(x + n, source->buf_start, source->buf_end);
55-
y = cir_buf_wrap(y + n, sink->buf_start, sink->buf_end);
57+
remaining_samples -= chunk_samples;
58+
src = source_cir_buf_wrap(src + chunk_samples, source->buf_start, source->buf_end);
59+
dst = cir_buf_wrap(dst + chunk_samples, sink->buf_start, sink->buf_end);
5660
}
5761
}
5862
#endif /* CONFIG_FORMAT_S16LE */
@@ -62,33 +66,37 @@ void eq_fir_s24(struct fir_state_32x16 fir[], struct cir_buf_source *source,
6266
struct cir_buf_sink *sink, int frames, int channels)
6367
{
6468
struct fir_state_32x16 *filter;
65-
int32_t z;
66-
const int32_t *x0;
67-
int32_t *y0;
68-
const int32_t *x = source->ptr;
69-
int32_t *y = sink->ptr;
70-
int nmax, n, i, j;
69+
int32_t filtered_sample;
70+
const int32_t *src_channel;
71+
int32_t *dst_channel;
72+
const int32_t *src = source->ptr;
73+
int32_t *dst = sink->ptr;
74+
int max_samples;
75+
int chunk_samples;
76+
int sample_index;
77+
int channel;
7178
int remaining_samples = frames * channels;
7279

7380
while (remaining_samples) {
74-
nmax = cir_buf_samples_without_wrap_s32(x, source->buf_end);
75-
n = MIN(remaining_samples, nmax);
76-
nmax = cir_buf_samples_without_wrap_s32(y, sink->buf_end);
77-
n = MIN(n, nmax);
78-
for (j = 0; j < channels; j++) {
79-
x0 = x + j;
80-
y0 = y + j;
81-
filter = &fir[j];
82-
for (i = 0; i < n; i += channels) {
83-
z = fir_32x16(filter, *x0 << 8);
84-
*y0 = sat_int24(Q_SHIFT_RND(z, 31, 23));
85-
x0 += channels;
86-
y0 += channels;
81+
max_samples = cir_buf_samples_without_wrap_s32(src, source->buf_end);
82+
chunk_samples = MIN(remaining_samples, max_samples);
83+
max_samples = cir_buf_samples_without_wrap_s32(dst, sink->buf_end);
84+
chunk_samples = MIN(chunk_samples, max_samples);
85+
for (channel = 0; channel < channels; channel++) {
86+
src_channel = src + channel;
87+
dst_channel = dst + channel;
88+
filter = &fir[channel];
89+
for (sample_index = 0; sample_index < chunk_samples;
90+
sample_index += channels) {
91+
filtered_sample = fir_32x16(filter, *src_channel << 8);
92+
*dst_channel = sat_int24(Q_SHIFT_RND(filtered_sample, 31, 23));
93+
src_channel += channels;
94+
dst_channel += channels;
8795
}
8896
}
89-
remaining_samples -= n;
90-
x = source_cir_buf_wrap(x + n, source->buf_start, source->buf_end);
91-
y = cir_buf_wrap(y + n, sink->buf_start, sink->buf_end);
97+
remaining_samples -= chunk_samples;
98+
src = source_cir_buf_wrap(src + chunk_samples, source->buf_start, source->buf_end);
99+
dst = cir_buf_wrap(dst + chunk_samples, sink->buf_start, sink->buf_end);
92100
}
93101
}
94102
#endif /* CONFIG_FORMAT_S24LE */
@@ -98,31 +106,35 @@ void eq_fir_s32(struct fir_state_32x16 fir[], struct cir_buf_source *source,
98106
struct cir_buf_sink *sink, int frames, int channels)
99107
{
100108
struct fir_state_32x16 *filter;
101-
const int32_t *x0;
102-
int32_t *y0;
103-
const int32_t *x = source->ptr;
104-
int32_t *y = sink->ptr;
105-
int nmax, n, i, j;
109+
const int32_t *src_channel;
110+
int32_t *dst_channel;
111+
const int32_t *src = source->ptr;
112+
int32_t *dst = sink->ptr;
113+
int max_samples;
114+
int chunk_samples;
115+
int sample_index;
116+
int channel;
106117
int remaining_samples = frames * channels;
107118

108119
while (remaining_samples) {
109-
nmax = cir_buf_samples_without_wrap_s32(x, source->buf_end);
110-
n = MIN(remaining_samples, nmax);
111-
nmax = cir_buf_samples_without_wrap_s32(y, sink->buf_end);
112-
n = MIN(n, nmax);
113-
for (j = 0; j < channels; j++) {
114-
x0 = x + j;
115-
y0 = y + j;
116-
filter = &fir[j];
117-
for (i = 0; i < n; i += channels) {
118-
*y0 = fir_32x16(filter, *x0);
119-
x0 += channels;
120-
y0 += channels;
120+
max_samples = cir_buf_samples_without_wrap_s32(src, source->buf_end);
121+
chunk_samples = MIN(remaining_samples, max_samples);
122+
max_samples = cir_buf_samples_without_wrap_s32(dst, sink->buf_end);
123+
chunk_samples = MIN(chunk_samples, max_samples);
124+
for (channel = 0; channel < channels; channel++) {
125+
src_channel = src + channel;
126+
dst_channel = dst + channel;
127+
filter = &fir[channel];
128+
for (sample_index = 0; sample_index < chunk_samples;
129+
sample_index += channels) {
130+
*dst_channel = fir_32x16(filter, *src_channel);
131+
src_channel += channels;
132+
dst_channel += channels;
121133
}
122134
}
123-
remaining_samples -= n;
124-
x = source_cir_buf_wrap(x + n, source->buf_start, source->buf_end);
125-
y = cir_buf_wrap(y + n, sink->buf_start, sink->buf_end);
135+
remaining_samples -= chunk_samples;
136+
src = source_cir_buf_wrap(src + chunk_samples, source->buf_start, source->buf_end);
137+
dst = cir_buf_wrap(dst + chunk_samples, sink->buf_start, sink->buf_end);
126138
}
127139
}
128140
#endif /* CONFIG_FORMAT_S32LE */

0 commit comments

Comments
 (0)