Skip to content

Commit

Permalink
Audio: Optimize crossover_s32_default and add comments
Browse files Browse the repository at this point in the history
Identify active sinks before frame processing in crossover_s32_default.
This reduces redundant null checks and improves performance by
processing only active sinks.

Add detailed comments to describe the logic in crossover_s32_default.
This helps in understanding the function's flow and the purpose of
each section.

Signed-off-by: Shriram Shastry <[email protected]>
  • Loading branch information
ShriramShastry committed Aug 20, 2024
1 parent 7f116b9 commit a41f27d
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions src/audio/crossover/crossover_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,36 +225,29 @@ static void crossover_s32_default(struct comp_data *cd,
int32_t num_sinks,
uint32_t frames)
{
/* Array to hold active sink streams; initialized to null */
struct audio_stream *sink_stream[SOF_CROSSOVER_MAX_STREAMS] = { NULL };
struct crossover_state *state;
const struct audio_stream *source_stream = bsource->data;
int32_t *x, *y;
int ch, i, j;
int idx;
int active_sinks = 0; /* Counter for active sink streams */
int active_sinks = 0; /* Counter for active sink streams */
int nch = audio_stream_get_channels(source_stream);
int32_t out[num_sinks];

/* Identify active sinks, avoid processing null sinks later */
for (j = 0; j < num_sinks; j++) {
if (bsinks[j])
sink_stream[active_sinks++] = bsinks[j]->data;
}

/* Process for each channel */
for (ch = 0; ch < nch; ch++) {
/* Set current crossover state */
state = &cd->state[ch];
/* Iterate over frames */
for (i = 0, idx = ch; i < frames; i++, idx += nch) {
/* Read source */
x = audio_stream_read_frag_s32(source_stream, idx);
cd->crossover_split(*x, out, state);
/* Write output to active sinks */

for (j = 0; j < active_sinks; j++) {
y = audio_stream_write_frag_s32(sink_stream[j], idx);
/* Copy processed data to sink */
*y = out[j];
}
}
Expand Down

0 comments on commit a41f27d

Please sign in to comment.