Skip to content

Commit 4f028c5

Browse files
pjdobrowolskilgirdwood
authored andcommitted
up_down_mixer: sink/source refactor
module being refactored to use sink/source API Signed-off-by: Dobrowolski, PawelX <pawelx.dobrowolski@intel.com>
1 parent 3d4883a commit 4f028c5

1 file changed

Lines changed: 30 additions & 21 deletions

File tree

src/audio/up_down_mixer/up_down_mixer.c

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -401,44 +401,53 @@ static int up_down_mixer_init(struct processing_module *mod)
401401

402402
static int
403403
up_down_mixer_process(struct processing_module *mod,
404-
struct input_stream_buffer *input_buffers, int num_input_buffers,
405-
struct output_stream_buffer *output_buffers, int num_output_buffers)
404+
struct sof_source **input_buffers, int num_input_buffers,
405+
struct sof_sink **output_buffers, int num_output_buffers)
406406
{
407407
struct up_down_mixer_data *cd = module_get_private_data(mod);
408408
struct comp_dev *dev = mod->dev;
409-
uint32_t source_bytes, sink_bytes;
410-
uint32_t mix_frames;
411409

412-
comp_dbg(dev, "up_down_mixer_process()");
410+
size_t output_frames, input_frames, ret, input_cirbuf_size, output_cirbuf_size;
411+
const uint8_t *input0_pos, *input0_start;
412+
uint8_t *output_pos, *output_start;
413413

414-
mix_frames = audio_stream_avail_frames(mod->input_buffers[0].data,
415-
mod->output_buffers[0].data);
414+
comp_dbg(dev, "up_down_mixer_process()");
416415

417-
source_bytes = mix_frames * audio_stream_frame_bytes(mod->input_buffers[0].data);
418-
sink_bytes = mix_frames * audio_stream_frame_bytes(mod->output_buffers[0].data);
416+
output_frames = sink_get_free_frames(output_buffers[0]);
417+
input_frames = source_get_data_frames_available(input_buffers[0]);
419418

420-
if (source_bytes) {
421-
uint32_t sink_sample_bytes;
419+
const size_t output_frame_bytes = sink_get_frame_bytes(output_buffers[0]);
422420

423-
audio_stream_copy_to_linear(mod->input_buffers[0].data, 0, cd->buf_in, 0,
424-
source_bytes /
425-
audio_stream_sample_bytes(mod->input_buffers[0].data));
421+
ret = sink_get_buffer(output_buffers[0], output_frames * output_frame_bytes,
422+
(void **)&output_pos, (void **)&output_start, &output_cirbuf_size);
423+
if (ret)
424+
return -ENODATA;
426425

427-
cd->mix_routine(cd, (uint8_t *)cd->buf_in, source_bytes, (uint8_t *)cd->buf_out);
426+
const size_t input0_frame_bytes = source_get_frame_bytes(input_buffers[0]);
428427

429-
sink_sample_bytes = audio_stream_sample_bytes(mod->output_buffers[0].data);
430-
audio_stream_copy_from_linear(cd->buf_out, 0, mod->output_buffers[0].data, 0,
431-
sink_bytes / sink_sample_bytes);
432-
mod->output_buffers[0].size = sink_bytes;
433-
mod->input_buffers[0].consumed = source_bytes;
428+
ret = source_get_data(input_buffers[0], input_frames * input0_frame_bytes,
429+
(const void **)&input0_pos, (const void **)&input0_start,
430+
&input_cirbuf_size);
431+
if (ret) {
432+
sink_commit_buffer(output_buffers[0], 0);
433+
return -ENODATA;
434434
}
435435

436+
cd->mix_routine(cd, (const void *)input0_start, input_cirbuf_size, (void *)output_start);
437+
438+
ret = sink_commit_buffer(output_buffers[0], output_frames * output_frame_bytes);
439+
if (ret)
440+
return ret;
441+
442+
ret = source_release_data(input_buffers[0], input_frames * input0_frame_bytes);
443+
if (ret)
444+
return ret;
436445
return 0;
437446
}
438447

439448
static const struct module_interface up_down_mixer_interface = {
440449
.init = up_down_mixer_init,
441-
.process_audio_stream = up_down_mixer_process,
450+
.process = up_down_mixer_process,
442451
.free = up_down_mixer_free
443452
};
444453

0 commit comments

Comments
 (0)