diff --git a/src/audio/module_adapter/iadk/iadk_module_adapter.cpp b/src/audio/module_adapter/iadk/iadk_module_adapter.cpp index 92ad7bdc8661..c680622963ea 100644 --- a/src/audio/module_adapter/iadk/iadk_module_adapter.cpp +++ b/src/audio/module_adapter/iadk/iadk_module_adapter.cpp @@ -39,12 +39,12 @@ int IadkModuleAdapter::IadkModuleAdapter_Prepare(void) return 0; } -uint32_t IadkModuleAdapter::IadkModuleAdapter_Process(struct sof_source **sources, - int num_of_sources, - struct sof_sink **sinks, - int num_of_sinks) +int IadkModuleAdapter::IadkModuleAdapter_Process(struct sof_source **sources, + int num_of_sources, + struct sof_sink **sinks, + int num_of_sinks) { - uint32_t ret = 0; + int ret = 0; if ((num_of_sources > 0) && (num_of_sinks > 0)) { intel_adsp::InputStreamBuffer input_stream_buffers[INPUT_PIN_COUNT]; @@ -80,7 +80,14 @@ uint32_t IadkModuleAdapter::IadkModuleAdapter_Process(struct sof_source **source new (&output_stream_buffers[i]) intel_adsp::OutputStreamBuffer(osb_data); } - ret = processing_module_.Process(input_stream_buffers, output_stream_buffers); + uint32_t iadk_ret = + processing_module_.Process(input_stream_buffers, output_stream_buffers); + + /* IADK modules returns uint32_t return code. Convert to failure if Process + * not successful. + */ + if (iadk_ret != 0) + ret = -ENODATA; for (int i = 0; i < num_of_sources; i++) { source_release_data(sources[i], input_stream_buffers[i].size); diff --git a/src/include/sof/audio/module_adapter/iadk/iadk_module_adapter.h b/src/include/sof/audio/module_adapter/iadk/iadk_module_adapter.h index ed6e80ba03d7..b14cf169c909 100644 --- a/src/include/sof/audio/module_adapter/iadk/iadk_module_adapter.h +++ b/src/include/sof/audio/module_adapter/iadk/iadk_module_adapter.h @@ -64,10 +64,10 @@ namespace dsp_fw * samples provided by the codec_adapter and produce/output the processed * ones back to codec_adapter. */ - uint32_t IadkModuleAdapter_Process(struct sof_source **sources, - int num_of_sources, - struct sof_sink **sinks, - int num_of_sinks); + int IadkModuleAdapter_Process(struct sof_source **sources, + int num_of_sources, + struct sof_sink **sinks, + int num_of_sinks); /** * Module specific apply config procedure, called by codec_adapter every time