You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[FEATURE] organize audio module source code to per-module directories #8630
Is your feature request related to a problem? Please describe.
Currently audio module source files are a bit spread around the codebase. Clean up the codebase to so that all key files and definitions for a module are in a single place.
Describe the solution you'd like
Per module directory which contains its own headers, Kconfig and CMakefile.
Any metadata should be in this folder (.e.g IPC4 toml file sections to describe the cycle budgets)
A README.MD that describes module features, capabilities and performance.
One open issue is how to tackel modules that build on each others functionality directly (like crossover, drc and mutliband-drc). Reusing functionality is something we want to promite as well, so the effort to isolate modules should not make this harder.
@marc-hb , if we use zephyr syntax, how about non-zephyr case? I mean CONFIG_ZEPHYR_NATIVE_DRIVERS not defined?
There are three ways to cover this:
keep current ../../
Marc's proposal.
move those common to a unify header and store it in math folder.
Any modules that have any public module APIs can have these APIs published in the include/module directory. e.g. I think IIR and FIR will have public APIs for other modules to use/call.
Any modules that have any public module APIs can have these APIs published in the include/module directory. e.g. I think IIR
and FIR will have public APIs for other modules to use/call.
I'm not sure the crosssover-drc-multibanddrc falls into this case. This is rather a closely related family of algorithms where multiband-drc uses the e.g. crossover completely. Exposing a complete algorithm under "math" does not seem good. I still think the "../../" solution fits this case better. Or we keep the headers of "shared modules" in the include directory (include/module perhaps) -- and not apply this reorganization to these shared modules.
Any modules that have any public module APIs can have these APIs published in the include/module directory. e.g. I think IIR
and FIR will have public APIs for other modules to use/call.
I'm not sure the crosssover-drc-multibanddrc falls into this case. This is rather a closely related family of algorithms where multiband-drc uses the e.g. crossover completely. Exposing a complete algorithm under "math" does not seem good. I still think the "../../" solution fits this case better. Or we keep the headers of "shared modules" in the include directory (include/module perhaps) -- and not apply this reorganization to these shared modules.
I mean src/include/module/module/crossover directory where clients would #include <module/crossover/x.h>
Activity
kv2019i commentedon Dec 14, 2023
Related PRs
kv2019i commentedon Dec 14, 2023
One open issue is how to tackel modules that build on each others functionality directly (like crossover, drc and mutliband-drc). Reusing functionality is something we want to promite as well, so the effort to isolate modules should not make this harder.
marc-hb commentedon Dec 15, 2023
zephyr_library()andzephyr_library_include_directories()is what Zephyr seems to use to solve the CMake part of this problem.I couldn't find documentation about this in https://docs.zephyrproject.org/latest/ but there is a lot in the source of https://github.com/zephyrproject-rtos/zephyr/blob/main/cmake/modules/extensions.cmake
cc: @andyross, @cujomalainey , @johnylin76 , @btian1 , @lyakh , @singalsu , @RanderWang
btian1 commentedon Dec 18, 2023
@marc-hb , if we use zephyr syntax, how about non-zephyr case? I mean CONFIG_ZEPHYR_NATIVE_DRIVERS not defined?
There are three ways to cover this:
marc-hb commentedon Dec 18, 2023
Then we need an indirection like the one used in
EDIT: I don't have any full "proposal" at the moment. I'm just researching and brainstorming so far.
lgirdwood commentedon Dec 19, 2023
Any modules that have any public module APIs can have these APIs published in the include/module directory. e.g. I think IIR and FIR will have public APIs for other modules to use/call.
kv2019i commentedon Dec 20, 2023
@lgirdwood wrote:
I'm not sure the crosssover-drc-multibanddrc falls into this case. This is rather a closely related family of algorithms where multiband-drc uses the e.g. crossover completely. Exposing a complete algorithm under "math" does not seem good. I still think the "../../" solution fits this case better. Or we keep the headers of "shared modules" in the include directory (include/module perhaps) -- and not apply this reorganization to these shared modules.
lgirdwood commentedon Dec 21, 2023
I mean
src/include/module/module/crossoverdirectory where clients would#include <module/crossover/x.h>btian1 commentedon Jan 5, 2024
most modules refactor are done for now, main open for this feature is: README.MD, need @singalsu input on this.
lgirdwood commentedon Jan 8, 2024
Great, whats' still remaining - I still see some active PRs for some 3P modules.