Skip to content

Commit

Permalink
modules: Remove unnecessary functions from Processing Module Adapter
Browse files Browse the repository at this point in the history
To ensure proper operation of native loadable modules it is necessary to
bypass Processing Module Adapter used by IADK modules. This is currently
done by overriding the pointer to module_interface used by the Module
Adapter. Thanks to this, the Module Adapter directly calls functions
provided by native module. As in this case the Processing Module Adapter
functions are omitted, support for native libraries are removed from it as
it is no longer needed. This leads to remove modules_process_raw and
modules_process_audio_stream functions.

Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
  • Loading branch information
softwarecki authored and kv2019i committed Apr 3, 2024
1 parent baca261 commit dc19c87
Showing 1 changed file with 9 additions and 37 deletions.
46 changes: 9 additions & 37 deletions src/audio/module_adapter/module/modules.c
Original file line number Diff line number Diff line change
Expand Up @@ -199,34 +199,11 @@ static int modules_prepare(struct processing_module *mod,
struct sof_sink **sinks, int num_of_sinks)
{
struct comp_dev *dev = mod->dev;
const struct comp_driver *const drv = dev->drv;
int ret = 0;

comp_info(dev, "modules_prepare()");

/* Call module specific prepare function if exists. */
if (mod->is_native_sof) {
const struct module_interface *mod_in = drv->adapter_ops;

ret = mod_in->prepare(mod, sources, num_of_sources, sinks, num_of_sinks);
} else {
ret = iadk_wrapper_prepare(mod->priv.module_adapter);
}
return ret;
}

static int modules_init_process(struct processing_module *mod)
{
struct module_data *codec = &mod->priv;
struct comp_dev *dev = mod->dev;

comp_dbg(dev, "modules_init_process()");
return iadk_wrapper_prepare(mod->priv.module_adapter);

codec->mpd.produced = 0;
codec->mpd.consumed = 0;
codec->mpd.init_done = 1;

return 0;
}

static int modules_process(struct processing_module *mod,
Expand All @@ -237,7 +214,7 @@ static int modules_process(struct processing_module *mod,
return iadk_wrapper_process(mod->priv.module_adapter, sources,
num_of_sources, sinks, num_of_sinks);

const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->process(mod, sources, num_of_sources, sinks, num_of_sinks);
}
Expand All @@ -251,7 +228,7 @@ static int modules_process_audio_stream(struct processing_module *mod,
if (!mod->is_native_sof)
return -EOPNOTSUPP;

const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->process_audio_stream(mod, input_buffers, num_input_buffers,
output_buffers, num_output_buffers);
Expand Down Expand Up @@ -279,7 +256,7 @@ static int modules_process_raw(struct processing_module *mod,
modules_init_process(mod);

/* Call module specific process function. */
const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->process_raw_data(mod, input_buffers, num_input_buffers,
output_buffers, num_output_buffers);
Expand All @@ -301,16 +278,13 @@ static int modules_free(struct processing_module *mod)

comp_info(dev, "modules_free()");
if (mod->is_native_sof) {
const struct module_interface *mod_in = drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

ret = mod_in->free(mod);
} else {
ret = iadk_wrapper_free(mod->priv.module_adapter);
}

if (ret < 0)
comp_err(dev, "Failed to free a module: %d", ret);

rfree(md->mpd.in_buff);
rfree(md->mpd.out_buff);

Expand Down Expand Up @@ -346,7 +320,7 @@ static int modules_set_configuration(struct processing_module *mod, uint32_t con
size_t response_size)
{
if (mod->is_native_sof) {
const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->set_configuration(mod, config_id, pos, data_offset_size, fragment,
fragment_size, response, response_size);
Expand All @@ -373,7 +347,7 @@ static int modules_get_configuration(struct processing_module *mod, uint32_t con
size_t fragment_size)
{
if (mod->is_native_sof) {
const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->get_configuration(mod, config_id, data_offset_size,
fragment, fragment_size);
Expand All @@ -394,7 +368,7 @@ static int modules_set_processing_mode(struct processing_module *mod,
enum module_processing_mode mode)
{
if (mod->is_native_sof) {
const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->set_processing_mode(mod, mode);
}
Expand Down Expand Up @@ -422,7 +396,7 @@ static enum module_processing_mode modules_get_processing_mode(struct processing
static int modules_reset(struct processing_module *mod)
{
if (mod->is_native_sof) {
const struct module_interface *const mod_in = mod->dev->drv->adapter_ops;
const struct module_interface *mod_in = mod->priv.ops;

return mod_in->reset(mod);
}
Expand All @@ -433,9 +407,7 @@ static int modules_reset(struct processing_module *mod)
const struct module_interface processing_module_adapter_interface = {
.init = modules_init,
.prepare = modules_prepare,
.process_raw_data = modules_process_raw,
.process = modules_process,
.process_audio_stream = modules_process_audio_stream,
.set_processing_mode = modules_set_processing_mode,
.get_processing_mode = modules_get_processing_mode,
.set_configuration = modules_set_configuration,
Expand Down

0 comments on commit dc19c87

Please sign in to comment.