Skip to content

comp: Add initial support for NXP Essential Audio Processing component - #9999

Merged
dbaluta merged 3 commits into
thesofproject:mainfrom
dbaluta:add_eap_nxp
May 19, 2025
Merged

comp: Add initial support for NXP Essential Audio Processing component#9999
dbaluta merged 3 commits into
thesofproject:mainfrom
dbaluta:add_eap_nxp

Conversation

@dbaluta

Copy link
Copy Markdown
Collaborator
comp: Add initial NXP Essential Audio Processing component
NXP’s Essential Audio Processing (EAP) library is a bundle of audio
processing blocks for enhancing the tonal and spatial perception
of sound in audio applications
The initial support adds some presets parameters that can be set
using the standard alsamixer interface.
* AllEffectOff
* VoiceEnhancer
* MusicEnhancer
* AutoVolumeLeveler
* ConcertSound
* LoudnessMaximiser

Library binaries, headers and more documentation can be found here: https://github.com/nxp-mcuxpresso/EAP

CopilotAI review requested due to automatic review settings May 12, 2025 07:03
@dbalutadbaluta changed the title comp: Add initial NXP Essential Audio Processing componentcomp: Add initial support for NXP Essential Audio Processing componentMay 12, 2025

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces initial support for the NXP Essential Audio Processing (EAP) component, adding both the full EAP processing implementation and its associated topology and configuration files.

  • Added new EAP processing code and parameter presets in src/audio/nxp/eap.c and related header files.
  • Introduced topology and module adapter updates (M4 scripts and CMake/Kconfig changes) to integrate the new EAP component.
  • Registered the component via uuid-registry.txt and exposed an interface in component.h.

Reviewed Changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
uuid-registry.txtRegisters the new uuid for the nxp_eap component.
tools/topology/topology1/sof/pipe-eap-playback.m4Adds pipeline topology for EAP playback functionality.
tools/topology/topology1/m4/eap_controls.m4Defines the control enumerations for the EAP component.
tools/topology/topology1/m4/eap.m4Provides macros for creating EAP widget sections.
tools/topology/topology1/CMakeLists.txtUpdates topology configuration to include the new EAP pipeline.
src/include/sof/audio/nxp/eap/eap_lib_defines.hIntroduces library macros for EAP processing features.
src/include/sof/audio/nxp/eap/EAP_Parameter_presets.hAdds preset arrays for various EAP effects.
src/include/sof/audio/component.hDeclares the new initialization function for the NXP EAP interface.
src/audio/nxp/eap_stub.cImplements stub functions for EAP when stub support is enabled.
src/audio/nxp/eap.cImplements the full processing functionality and configuration for EAP.
src/audio/nxp/KconfigAdds Kconfig entries for enabling EAP and its stub.
src/audio/nxp/CMakeLists.txtConfigures CMake to build the EAP component and optionally its stub.
src/audio/KconfigSources the nxp/Kconfig for component integration.
src/audio/CMakeLists.txtIntegrates the nxp subdirectory into the overall build.
Comments suppressed due to low confidence (1)

src/include/sof/audio/nxp/eap/EAP_Parameter_presets.h:1

  • [nitpick] The preset parameter arrays are defined in a header file without 'static' or 'const', which may lead to multiple definition issues. Consider declaring them as 'static const' if intended for use as constant data.
#ifndef EAP_PARAMETER_PRESETS_H_

Comment threadsrc/audio/nxp/eap.c Outdated
Comment threadsrc/audio/nxp/eap.c Outdated

@lgirdwoodlgirdwood left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dbaluta good stuff ! I think we can land this for v2.12.
Btw, if convenient you can copy the tensorflow git clone script and adjust it for EAP to make it super easy for EAP users to get started (i.e. it can clone a known good commit).

@dbaluta

dbaluta commented May 12, 2025

Copy link
Copy Markdown
CollaboratorAuthor

@dbaluta good stuff ! I think we can land this for v2.12.
Btw, if convenient you can copy the tensorflow git clone script and adjust it for EAP to make it super easy for EAP users to get started (i.e. it can clone a known good commit).

We have only one repo for the binaries and it's handled inside our Yocto distro. But will have a look might be useful to have it inside the SOF scripts.

Thanks,

Comment threadsrc/audio/nxp/eap.c
Comment threadsrc/audio/nxp/eap.c
Comment threadsrc/audio/nxp/eap.c Outdated
Comment threadsrc/audio/nxp/eap.c
Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/EAP16.h
Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/EAP16.h
Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/EAP32.h
Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/EAP32.h
Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/LVC_Types.h

@kv2019ikv2019i left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Please look at the comment with freeing memory on error path. Otherwise no blocking comments. The header location is something we probably need to work on (see inline), but does not have to be made in this PR.

Comment threadsrc/audio/nxp/eap.c
int index;
LVM_ReturnStatus_en ret;
struct comp_dev *dev = mod->dev;
struct nxp_eap_data *eap = module_get_private_data(mod);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor nit: reverse-xmas tree order for declarations would be nice

Comment threadsrc/include/sof/audio/nxp/eap/EAP_Includes/EAP16.h
Comment threadsrc/audio/nxp/eap_stub.c
@lgirdwoodlgirdwood added this to the v2.13 milestone May 16, 2025
@lgirdwood

Copy link
Copy Markdown
Member

@dbaluta@kv2019i I've marked this for v2.13 as we can take it into the release if ready in next few days. Its a great feature to have.

@dbaluta

Copy link
Copy Markdown
CollaboratorAuthor

Need to fix the last commit. Will do this on Monday.

NXP’s Essential Audio Processing (EAP) library is a bundle of audio
processing blocks for enhancing the tonal and spatial perception
of sound in audio applications
The initial support adds some presets parameters that can be set
using the standard alsamixer interface.
* AllEffectOff
* VoiceEnhancer
* MusicEnhancer
* AutoVolumeLeveler
* ConcertSound
* LoudnessMaximiser
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
dbaluta added 2 commits May 19, 2025 11:19
This adds Essential Audio Processing (EAP) topology for
i.MX8MP board with wm8960 codec.
This will allow experiment with various EAP library preset
parameters.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
This is used for CI testing and compiling.
Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
@kv2019i

Copy link
Copy Markdown
Collaborator

Waiting for the Intel Internal CI job to complete.

testbench CI will not complete, so won't wait for that (#10017) .

Otherwise ready to merge.

@dbaluta
dbaluta merged commit 0f87a81 into thesofproject:mainMay 19, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@dbaluta@lgirdwood@kv2019i@lyakh