From b59e53034bef27ddb25e018851914365ea23319f Mon Sep 17 00:00:00 2001 From: Daniel Baluta Date: Tue, 2 Mar 2021 20:37:05 +0200 Subject: [PATCH] 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 --- src/audio/codec_adapter/codec/generic.c | 19 +++++++++++++++++++ .../sof/audio/codec_adapter/codec/cadence.h | 1 + .../sof/audio/codec_adapter/codec/generic.h | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/src/audio/codec_adapter/codec/generic.c b/src/audio/codec_adapter/codec/generic.c index 8c1259f88..aee53aae2 100644 --- a/src/audio/codec_adapter/codec/generic.c +++ b/src/audio/codec_adapter/codec/generic.c @@ -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; diff --git a/src/include/sof/audio/codec_adapter/codec/cadence.h b/src/include/sof/audio/codec_adapter/codec/cadence.h index 6779cd94b..d8bb69754 100644 --- a/src/include/sof/audio/codec_adapter/codec/cadence.h +++ b/src/include/sof/audio/codec_adapter/codec/cadence.h @@ -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); diff --git a/src/include/sof/audio/codec_adapter/codec/generic.h b/src/include/sof/audio/codec_adapter/codec/generic.h index f1afc658d..c2b48596c 100644 --- a/src/include/sof/audio/codec_adapter/codec/generic.h +++ b/src/include/sof/audio/codec_adapter/codec/generic.h @@ -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);