codec_adapter: Introduce codec_init_process api

This function should be called before processing. It searches
for a valid header, does header decoding to get the parameters
and initializes state and configuration structures.

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This commit is contained in:
Daniel Baluta 2021-03-02 20:37:05 +02:00 committed by Daniel Baluta
parent 90831338ad
commit b59e53034b
3 changed files with 29 additions and 0 deletions

View File

@ -245,6 +245,25 @@ end:
return ret;
}
int codec_init_process(struct comp_dev *dev)
{
int ret;
struct comp_data *cd = comp_get_drvdata(dev);
struct codec_data *codec = &cd->codec;
comp_dbg(dev, "codec_init_process() start");
ret = codec->ops->init_process(dev);
if (ret) {
comp_err(dev, "codec_init_process() error %x", ret);
goto out;
}
comp_dbg(dev, "codec_init_process() done");
out:
return ret;
}
int codec_process(struct comp_dev *dev)
{
int ret;

View File

@ -48,6 +48,7 @@ struct cadence_codec_data {
/*****************************************************************************/
int cadence_codec_init(struct comp_dev *dev);
int cadence_codec_prepare(struct comp_dev *dev);
int cadence_codec_init_process(struct comp_dev *dev);
int cadence_codec_process(struct comp_dev *dev);
int cadence_codec_apply_config(struct comp_dev *dev);
int cadence_codec_reset(struct comp_dev *dev);

View File

@ -48,6 +48,14 @@ struct codec_interface {
* component preparation in .prepare()
*/
int (*prepare)(struct comp_dev *dev);
/**
* Codec specific init processing procedure, called as a part of
* codec_adapter component copy in .copy(). Typically in this
* phase a processing algorithm searches for the valid header,
* does header decoding to get the parameters and initializes
* state and configuration structures.
*/
int (*init_process)(struct comp_dev *dev);
/**
* Codec specific processing procedure, called as part of codec_adapter
* component copy in .copy(). This procedure is responsible to consume
@ -203,6 +211,7 @@ void *codec_allocate_memory(struct comp_dev *dev, uint32_t size,
int codec_free_memory(struct comp_dev *dev, void *ptr);
void codec_free_all_memory(struct comp_dev *dev);
int codec_prepare(struct comp_dev *dev);
int codec_init_process(struct comp_dev *dev);
int codec_process(struct comp_dev *dev);
int codec_apply_runtime_config(struct comp_dev *dev);
int codec_reset(struct comp_dev *dev);