mirror of https://github.com/thesofproject/sof.git
Revert "codec_adapter: cadece: remove unnecessary goto's and fix memory leaks"
This reverts commit 07f84ee0bf
.
This commit is contained in:
parent
f28ec17402
commit
1635fa4723
|
@ -133,7 +133,7 @@ static int cadence_codec_init(struct comp_dev *dev)
|
|||
comp_err(dev, "cadence_codec_init(): could not find API function for id %x",
|
||||
api_id);
|
||||
ret = -EINVAL;
|
||||
goto free;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Obtain codec name */
|
||||
|
@ -142,36 +142,38 @@ static int cadence_codec_init(struct comp_dev *dev)
|
|||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_init() error %x: failed to get lib name",
|
||||
ret);
|
||||
goto free;
|
||||
module_free_memory(dev, cd);
|
||||
goto out;
|
||||
}
|
||||
/* Get codec object size */
|
||||
API_CALL(cd, XA_API_CMD_GET_API_SIZE, 0, &obj_size, ret);
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_init() error %x: failed to get lib object size",
|
||||
ret);
|
||||
goto free;
|
||||
module_free_memory(dev, cd);
|
||||
goto out;
|
||||
}
|
||||
/* Allocate space for codec object */
|
||||
cd->self = module_allocate_memory(dev, obj_size, 0);
|
||||
if (!cd->self) {
|
||||
comp_err(dev, "cadence_codec_init(): failed to allocate space for lib object");
|
||||
ret = -ENOMEM;
|
||||
goto free;
|
||||
module_free_memory(dev, cd);
|
||||
goto out;
|
||||
} else {
|
||||
comp_dbg(dev, "cadence_codec_init(): allocated %d bytes for lib object",
|
||||
obj_size);
|
||||
}
|
||||
|
||||
comp_dbg(dev, "cadence_codec_init(): allocated %d bytes for lib object", obj_size);
|
||||
|
||||
/* Set all params to their default values */
|
||||
API_CALL(cd, XA_API_CMD_INIT, XA_CMD_TYPE_INIT_API_PRE_CONFIG_PARAMS,
|
||||
NULL, ret);
|
||||
if (ret != LIB_NO_ERROR)
|
||||
goto free;
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_init(): error %x: failed to set default config",
|
||||
ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
comp_dbg(dev, "cadence_codec_init() done");
|
||||
|
||||
return 0;
|
||||
free:
|
||||
module_free_memory(dev, cd);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -195,7 +197,8 @@ static int apply_config(struct comp_dev *dev, enum module_cfg_type type)
|
|||
if (!cfg->avail || !size) {
|
||||
comp_err(dev, "apply_config() error: no config available, requested conf. type %d",
|
||||
type);
|
||||
return -EIO;
|
||||
ret = -EIO;
|
||||
goto ret;
|
||||
}
|
||||
|
||||
/* Read parameters stored in `data` - it may keep plenty of
|
||||
|
@ -213,7 +216,7 @@ static int apply_config(struct comp_dev *dev, enum module_cfg_type type)
|
|||
comp_err(dev, "apply_config() error %x: failed to apply parameter %d value %d",
|
||||
ret, param->id, *(int32_t *)param->data);
|
||||
if (LIB_IS_FATAL_ERROR(ret))
|
||||
return ret;
|
||||
goto ret;
|
||||
}
|
||||
/* Obtain next parameter, it starts right after the preceding one */
|
||||
data = (char *)data + param->size;
|
||||
|
@ -221,8 +224,9 @@ static int apply_config(struct comp_dev *dev, enum module_cfg_type type)
|
|||
}
|
||||
|
||||
comp_dbg(dev, "apply_config() done");
|
||||
|
||||
return 0;
|
||||
ret = 0;
|
||||
ret:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int init_memory_tables(struct comp_dev *dev)
|
||||
|
@ -241,7 +245,7 @@ static int init_memory_tables(struct comp_dev *dev)
|
|||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "init_memory_tables() error %x: failed to calculate memory blocks size",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Get number of memory tables */
|
||||
|
@ -249,7 +253,7 @@ static int init_memory_tables(struct comp_dev *dev)
|
|||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "init_memory_tables() error %x: failed to get number of memory tables",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Initialize each memory table */
|
||||
|
@ -435,17 +439,19 @@ static int cadence_codec_prepare(struct comp_dev *dev)
|
|||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_prepare() error %x: failed to get memtabs size",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
cd->mem_tabs = module_allocate_memory(dev, mem_tabs_size, 4);
|
||||
if (!cd->mem_tabs) {
|
||||
comp_err(dev, "cadence_codec_prepare() error: failed to allocate space for memtabs");
|
||||
return -ENOMEM;
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
} else {
|
||||
comp_dbg(dev, "cadence_codec_prepare(): allocated %d bytes for memtabs",
|
||||
mem_tabs_size);
|
||||
}
|
||||
|
||||
comp_dbg(dev, "cadence_codec_prepare(): allocated %d bytes for memtabs", mem_tabs_size);
|
||||
|
||||
API_CALL(cd, XA_API_CMD_SET_MEMTABS_PTR, 0, cd->mem_tabs, ret);
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_prepare() error %x: failed to set memtabs",
|
||||
|
@ -483,6 +489,7 @@ static int cadence_codec_prepare(struct comp_dev *dev)
|
|||
return 0;
|
||||
free:
|
||||
module_free_memory(dev, cd->mem_tabs);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -512,33 +519,35 @@ static int cadence_codec_process(struct comp_dev *dev)
|
|||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_process() error %x: failed to set size of input data",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
API_CALL(cd, XA_API_CMD_EXECUTE, XA_CMD_TYPE_DO_EXECUTE, NULL, ret);
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_process() error %x: processing failed",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
API_CALL(cd, XA_API_CMD_GET_OUTPUT_BYTES, 0, &codec->mpd.produced, ret);
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_process() error %x: could not get produced bytes",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
API_CALL(cd, XA_API_CMD_GET_CURIDX_INPUT_BUF, 0, &codec->mpd.consumed, ret);
|
||||
if (ret != LIB_NO_ERROR) {
|
||||
comp_err(dev, "cadence_codec_process() error %x: could not get consumed bytes",
|
||||
ret);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
|
||||
comp_dbg(dev, "cadence_codec_process() done");
|
||||
|
||||
return 0;
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cadence_codec_apply_config(struct comp_dev *dev)
|
||||
|
|
Loading…
Reference in New Issue