Skip to content

Commit ea72e3e

Browse files
ranj063lgirdwood
authored andcommitted
module_adapter: Add a new helper to update input/output stream buffers
Add a new helper to update the consumed bytes in the input stream buffer and the produces bytes in the output stream buffer. Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
1 parent 2583398 commit ea72e3e

File tree

4 files changed

+57
-33
lines changed

4 files changed

+57
-33
lines changed

src/audio/eq_iir/eq_iir.c

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ static void eq_iir_s16_default(struct processing_module *mod, struct input_strea
8080
const int samples = frames * nch;
8181
int processed = 0;
8282

83-
bsource->consumed += samples << 1;
84-
bsink->size += samples << 1;
83+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S16_LE,
84+
SOF_IPC_FRAME_S16_LE, samples);
8585

8686
x = source->r_ptr;
8787
y = sink->w_ptr;
@@ -131,8 +131,8 @@ static void eq_iir_s24_default(struct processing_module *mod, struct input_strea
131131
const int samples = frames * nch;
132132
int processed = 0;
133133

134-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
135-
bsink->size += S32_SAMPLES_TO_BYTES(samples);
134+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
135+
SOF_IPC_FRAME_S32_LE, samples);
136136

137137
x = source->r_ptr;
138138
y = sink->w_ptr;
@@ -182,8 +182,8 @@ static void eq_iir_s32_default(struct processing_module *mod, struct input_strea
182182
const int samples = frames * nch;
183183
int processed = 0;
184184

185-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
186-
bsink->size += S32_SAMPLES_TO_BYTES(samples);
185+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
186+
SOF_IPC_FRAME_S32_LE, samples);
187187

188188
x = source->r_ptr;
189189
y = sink->w_ptr;
@@ -233,8 +233,8 @@ static void eq_iir_s32_16_default(struct processing_module *mod,
233233
const int samples = frames * nch;
234234
int processed = 0;
235235

236-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
237-
bsink->size += S16_SAMPLES_TO_BYTES(samples);
236+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
237+
SOF_IPC_FRAME_S16_LE, samples);
238238

239239
x = source->r_ptr;
240240
y = sink->w_ptr;
@@ -284,8 +284,8 @@ static void eq_iir_s32_24_default(struct processing_module *mod,
284284
const int samples = frames * nch;
285285
int processed = 0;
286286

287-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
288-
bsink->size += S32_SAMPLES_TO_BYTES(samples);
287+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
288+
SOF_IPC_FRAME_S32_LE, samples);
289289

290290
x = source->r_ptr;
291291
y = sink->w_ptr;
@@ -318,13 +318,12 @@ static void eq_iir_pass(struct processing_module *mod, struct input_stream_buffe
318318
struct audio_stream __sparse_cache *source = bsource->data;
319319
struct audio_stream __sparse_cache *sink = bsink->data;
320320

321-
if (source->frame_fmt == SOF_IPC_FRAME_S16_LE) {
322-
bsource->consumed += S16_SAMPLES_TO_BYTES(frames * source->channels);
323-
bsink->size += S16_SAMPLES_TO_BYTES(frames * source->channels);
324-
} else {
325-
bsource->consumed += S32_SAMPLES_TO_BYTES(frames * source->channels);
326-
bsink->size += S32_SAMPLES_TO_BYTES(frames * source->channels);
327-
}
321+
if (source->frame_fmt == SOF_IPC_FRAME_S16_LE)
322+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S16_LE,
323+
SOF_IPC_FRAME_S16_LE, frames * source->channels);
324+
else
325+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
326+
SOF_IPC_FRAME_S32_LE, frames * source->channels);
328327

329328
audio_stream_copy(source, 0, sink, 0, frames * source->channels);
330329
}
@@ -342,8 +341,8 @@ static void eq_iir_s32_s16_pass(struct processing_module *mod, struct input_stre
342341
int i;
343342
int remaining_samples = frames * source->channels;
344343

345-
bsource->consumed += S32_SAMPLES_TO_BYTES(remaining_samples);
346-
bsink->size += S16_SAMPLES_TO_BYTES(remaining_samples);
344+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
345+
SOF_IPC_FRAME_S16_LE, remaining_samples);
347346

348347
while (remaining_samples) {
349348
nmax = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, x));
@@ -375,8 +374,8 @@ static void eq_iir_s32_s24_pass(struct processing_module *mod, struct input_stre
375374
int i;
376375
int remaining_samples = frames * source->channels;
377376

378-
bsource->consumed += S32_SAMPLES_TO_BYTES(remaining_samples);
379-
bsink->size += S32_SAMPLES_TO_BYTES(remaining_samples);
377+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
378+
SOF_IPC_FRAME_S32_LE, remaining_samples);
380379

381380
while (remaining_samples) {
382381
nmax = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, x));

src/audio/module_adapter/module/volume/volume_generic.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ static void vol_s24_to_s24(struct processing_module *mod, struct input_stream_bu
7171
x = source->r_ptr;
7272
y = sink->w_ptr;
7373

74-
bsource->consumed += S32_SAMPLES_TO_BYTES(remaining_samples);
75-
bsink->size += S32_SAMPLES_TO_BYTES(remaining_samples);
74+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
75+
SOF_IPC_FRAME_S32_LE, remaining_samples);
7676
while (remaining_samples) {
7777
nmax = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, x));
7878
n = MIN(remaining_samples, nmax);
@@ -133,8 +133,8 @@ static void vol_s32_to_s32(struct processing_module *mod, struct input_stream_bu
133133

134134
x = source->r_ptr;
135135
y = sink->w_ptr;
136-
bsource->consumed += S32_SAMPLES_TO_BYTES(remaining_samples);
137-
bsink->size += S32_SAMPLES_TO_BYTES(remaining_samples);
136+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
137+
SOF_IPC_FRAME_S32_LE, remaining_samples);
138138
while (remaining_samples) {
139139
nmax = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, x));
140140
n = MIN(remaining_samples, nmax);
@@ -201,8 +201,8 @@ static void vol_s16_to_s16(struct processing_module *mod, struct input_stream_bu
201201
x = source->r_ptr;
202202
y = sink->w_ptr;
203203

204-
bsource->consumed += S16_SAMPLES_TO_BYTES(remaining_samples);
205-
bsink->size += S16_SAMPLES_TO_BYTES(remaining_samples);
204+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S16_LE,
205+
SOF_IPC_FRAME_S16_LE, remaining_samples);
206206
while (remaining_samples) {
207207
nmax = BYTES_TO_S16_SAMPLES(audio_stream_bytes_without_wrap(source, x));
208208
n = MIN(remaining_samples, nmax);

src/audio/module_adapter/module/volume/volume_hifi3.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ static void vol_s24_to_s24_s32(struct processing_module *mod, struct input_strea
9292
AE_SETCBEGIN0(buf);
9393
AE_SETCEND0(buf_end);
9494

95-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
96-
bsink->size += S32_SAMPLES_TO_BYTES(samples);
95+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
96+
SOF_IPC_FRAME_S32_LE, samples);
9797

9898
while (samples) {
9999
m = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, in));
@@ -183,8 +183,8 @@ static void vol_s32_to_s24_s32(struct processing_module *mod, struct input_strea
183183
AE_SETCBEGIN0(buf);
184184
AE_SETCEND0(buf_end);
185185

186-
bsource->consumed += S32_SAMPLES_TO_BYTES(samples);
187-
bsink->size += S32_SAMPLES_TO_BYTES(samples);
186+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S32_LE,
187+
SOF_IPC_FRAME_S32_LE, samples);
188188

189189
while (samples) {
190190
m = BYTES_TO_S32_SAMPLES(audio_stream_bytes_without_wrap(source, in));
@@ -324,8 +324,8 @@ static void vol_s16_to_s16(struct processing_module *mod, struct input_stream_bu
324324
}
325325
AE_SA64POS_FP(outu, out);
326326
samples -= n;
327-
bsource->consumed += S16_SAMPLES_TO_BYTES(n);
328-
bsink->size += S16_SAMPLES_TO_BYTES(n);
327+
module_update_processing_position(bsource, bsink, SOF_IPC_FRAME_S16_LE,
328+
SOF_IPC_FRAME_S16_LE, n);
329329
in = audio_stream_wrap(source, in);
330330
out = audio_stream_wrap(sink, out);
331331
}

src/include/sof/audio/module_adapter/module/generic.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,4 +334,29 @@ int module_set_large_config(struct comp_dev *dev, uint32_t param_id, bool first_
334334
int module_get_large_config(struct comp_dev *dev, uint32_t param_id, bool first_block,
335335
bool last_block, uint32_t *data_offset, char *data);
336336

337+
static inline void
338+
module_update_processing_position(struct input_stream_buffer *input,
339+
struct output_stream_buffer *output,
340+
enum sof_ipc_frame input_frame_fmt,
341+
enum sof_ipc_frame output_frame_fmt, int samples)
342+
{
343+
switch (input_frame_fmt) {
344+
case SOF_IPC_FRAME_S16_LE:
345+
input->consumed += S16_SAMPLES_TO_BYTES(samples);
346+
break;
347+
default:
348+
input->consumed += S32_SAMPLES_TO_BYTES(samples);
349+
break;
350+
}
351+
352+
switch (output_frame_fmt) {
353+
case SOF_IPC_FRAME_S16_LE:
354+
output->size += S16_SAMPLES_TO_BYTES(samples);
355+
break;
356+
default:
357+
output->size += S32_SAMPLES_TO_BYTES(samples);
358+
break;
359+
}
360+
}
361+
337362
#endif /* __SOF_AUDIO_MODULE_GENERIC__ */

0 commit comments

Comments
 (0)