-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tools: Testbench: Add to IPC4 version UUID based components load, apply initial byte control, etc. #9542
base: main
Are you sure you want to change the base?
Tools: Testbench: Add to IPC4 version UUID based components load, apply initial byte control, etc. #9542
Conversation
@@ -52,6 +55,27 @@ struct tb_config { | |||
int channels; | |||
unsigned long format; | |||
}; | |||
|
|||
struct tb_ctl { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we include the ABI header rather than duplicate ? I guess this comes from ALSA asoc.h ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure, this struct is a direct copy from SOF plugin. If we change, we should change both to be able to merge the sources later to a common library like tplg_parser. What do you think @ranj063 ?
|
||
/* src component private data */ | ||
struct ipc4_config_src { | ||
struct ipc4_base_module_cfg base; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we have size at the start ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not the struct for config blobs. I only moved this structure to be separate from large src_common.h that caused a build problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, but this is an IPC header, so this should be for host/module configuration.
|
||
/* src component private data */ | ||
struct ipc4_config_src { | ||
struct ipc4_base_module_cfg base; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not the struct for config blobs. I only moved this structure to be separate from large src_common.h that caused a build problem.
@@ -52,6 +55,27 @@ struct tb_config { | |||
int channels; | |||
unsigned long format; | |||
}; | |||
|
|||
struct tb_ctl { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure, this struct is a direct copy from SOF plugin. If we change, we should change both to be able to merge the sources later to a common library like tplg_parser. What do you think @ranj063 ?
VOLUME_FWL); | ||
|
||
return linear_gain; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ranj063 These volume tables math functions would be a good start for a common utils library. Maybe there could be a place in tplg_parser?
This patch copies similar change from SOF plugin. The load of host copier, DAI copier, PGA, and process components are updated to use UUID that is appended to end of IPC4 base module configuration and other component specific init IPC. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This adds find or byte controls and set to components after initialize. Also other control types mixer, switch, enum are parsed but not yet applied to components. The code is copied and adapted from SOF plugin. As addition the bytes control is split to several messages if the IPC message size limit is reached. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
If kept in src_common.h the inclusion to tplg_parser would create need to include even more headers from SOF. The simple src_ipc.h contains the only needed SRC IPC4 definition. The __SOF_AUDIO_SRC_SRC_H__ is updated to match header name and the ending #endif is moved file end where it should be. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This replaces for IPC4 testbench the previous non-working version that was a copy of IPC3 version. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This replaces for IPC4 testbench the previous non-working version that was a copy of IPC3 version. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The examples need to convert the testbench out.raw to wav format, not the converted input for testbench. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
afdf2fa
to
7cd25e1
Compare
I added to controls parsing commit capability to split a long bytes control blob to several IPC messages if it is large. It's useful for FIR and TDFB blobs. |
|
||
//tplg_bytes = &ctl->bytes_ctl; | ||
//priv_size = tplg_bytes->priv.size; | ||
abi = (struct sof_abi_hdr *)ctl->data; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove non-used // commented code.
To build and run IPC4 topologies, this needs PRs #9536, #9538. #9501 is needed if the topology is not containing blobs for byte controls (usually they do).