module_adapter: optimize buffer updates for consume and produce

Direct call for buffer updates and avoid notify usage.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
This commit is contained in:
Liam Girdwood 2023-06-02 13:38:08 +01:00 committed by Kai Vehmanen
parent bd45a7e15a
commit 89660c6160
1 changed files with 5 additions and 4 deletions

View File

@ -750,7 +750,7 @@ module_single_source_setup(struct comp_dev *dev,
struct list_item *blist;
uint32_t min_frames = UINT32_MAX;
uint32_t num_output_buffers;
uint32_t source_frame_bytes = 0;
uint32_t source_frame_bytes;
int i = 0;
source_frame_bytes = audio_stream_frame_bytes(&source_c[0]->stream);
@ -840,8 +840,8 @@ static int module_adapter_audio_stream_type_copy(struct comp_dev *dev)
src_c = attr_container_of(mod->input_buffers[i].data,
struct comp_buffer __sparse_cache,
stream, __sparse_cache);
comp_update_buffer_consume(src_c, mod->input_buffers[i].consumed);
if (mod->input_buffers[i].consumed)
audio_stream_consume(&src_c->stream, mod->input_buffers[i].consumed);
}
/* compute data consumed based on pin 0 since it is processed with base config
@ -868,7 +868,8 @@ static int module_adapter_audio_stream_type_copy(struct comp_dev *dev)
if (!mod->skip_sink_buffer_writeback)
buffer_stream_writeback(sink_c, mod->output_buffers[i].size);
comp_update_buffer_produce(sink_c, mod->output_buffers[i].size);
if (mod->output_buffers[i].size)
audio_stream_produce(&sink_c->stream, mod->output_buffers[i].size);
}
mod->total_data_produced += mod->output_buffers[0].size;