@@ -226,22 +226,10 @@ static int multiband_drc_init(struct processing_module *mod)
226226{
227227 struct module_data * md = & mod -> priv ;
228228 struct comp_dev * dev = mod -> dev ;
229- struct module_config * cfg = & md -> cfg ;
230229 struct multiband_drc_comp_data * cd ;
231- size_t bs = cfg -> size ;
232- int ret ;
233230
234231 comp_info (dev , "entry" );
235232
236- /* Check first before proceeding with dev and cd that coefficients
237- * blob size is sane.
238- */
239- if (bs > SOF_MULTIBAND_DRC_MAX_BLOB_SIZE ) {
240- comp_err (dev , "error: configuration blob size = %u > %d" ,
241- bs , SOF_MULTIBAND_DRC_MAX_BLOB_SIZE );
242- return - EINVAL ;
243- }
244-
245233 cd = mod_zalloc (mod , sizeof (* cd ));
246234 if (!cd )
247235 return - ENOMEM ;
@@ -260,24 +248,14 @@ static int multiband_drc_init(struct processing_module *mod)
260248 cd -> model_handler = mod_data_blob_handler_new (mod );
261249 if (!cd -> model_handler ) {
262250 comp_err (dev , "comp_data_blob_handler_new() failed." );
263- ret = - ENOMEM ;
264- goto cd_fail ;
251+ mod_data_blob_handler_free (mod , cd -> model_handler );
252+ mod_free (mod , cd );
253+ return - ENOMEM ;
265254 }
266255
267- /* Get configuration data and reset DRC state */
268- ret = comp_init_data_blob (cd -> model_handler , bs , cfg -> data );
269- if (ret < 0 ) {
270- comp_err (dev , "comp_init_data_blob() failed." );
271- goto cd_fail ;
272- }
273256 multiband_drc_reset_state (mod , & cd -> state );
274257
275258 return 0 ;
276-
277- cd_fail :
278- mod_data_blob_handler_free (mod , cd -> model_handler );
279- mod_free (mod , cd );
280- return ret ;
281259}
282260
283261__cold static int multiband_drc_free (struct processing_module * mod )
@@ -365,6 +343,7 @@ static int multiband_drc_prepare(struct processing_module *mod,
365343 struct multiband_drc_comp_data * cd = module_get_private_data (mod );
366344 struct comp_dev * dev = mod -> dev ;
367345 struct comp_buffer * sourceb ;
346+ size_t data_size ;
368347 int channels ;
369348 int rate ;
370349 int ret = 0 ;
@@ -390,8 +369,8 @@ static int multiband_drc_prepare(struct processing_module *mod,
390369 /* Initialize DRC */
391370 comp_dbg (dev , "source_format=%d, sink_format=%d" ,
392371 cd -> source_format , cd -> source_format );
393- cd -> config = comp_get_data_blob (cd -> model_handler , NULL , NULL );
394- if (cd -> config ) {
372+ cd -> config = comp_get_data_blob (cd -> model_handler , & data_size , NULL );
373+ if (cd -> config && data_size > 0 ) {
395374 ret = multiband_drc_setup (mod , channels , rate );
396375 if (ret < 0 ) {
397376 comp_err (dev , "error: multiband_drc_setup failed." );
0 commit comments