Skip to content

Conversation

@dbaluta
Copy link
Collaborator

@dbaluta dbaluta commented May 12, 2025

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

Copilot AI review requested due to automatic review settings May 12, 2025 07:03
@dbaluta dbaluta changed the title comp: Add initial NXP Essential Audio Processing component comp: Add initial support for NXP Essential Audio Processing component May 12, 2025
Copy link

Copilot AI left a comment

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
File Description
uuid-registry.txt Registers the new uuid for the nxp_eap component.
tools/topology/topology1/sof/pipe-eap-playback.m4 Adds pipeline topology for EAP playback functionality.
tools/topology/topology1/m4/eap_controls.m4 Defines the control enumerations for the EAP component.
tools/topology/topology1/m4/eap.m4 Provides macros for creating EAP widget sections.
tools/topology/topology1/CMakeLists.txt Updates topology configuration to include the new EAP pipeline.
src/include/sof/audio/nxp/eap/eap_lib_defines.h Introduces library macros for EAP processing features.
src/include/sof/audio/nxp/eap/EAP_Parameter_presets.h Adds preset arrays for various EAP effects.
src/include/sof/audio/component.h Declares the new initialization function for the NXP EAP interface.
src/audio/nxp/eap_stub.c Implements stub functions for EAP when stub support is enabled.
src/audio/nxp/eap.c Implements the full processing functionality and configuration for EAP.
src/audio/nxp/Kconfig Adds Kconfig entries for enabling EAP and its stub.
src/audio/nxp/CMakeLists.txt Configures CMake to build the EAP component and optionally its stub.
src/audio/Kconfig Sources the nxp/Kconfig for component integration.
src/audio/CMakeLists.txt Integrates 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_

Copy link
Member

@lgirdwood lgirdwood left a comment

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
Copy link
Collaborator Author

dbaluta commented May 12, 2025

@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,

Copy link
Collaborator

@kv2019i kv2019i left a comment

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.

int index;
LVM_ReturnStatus_en ret;
struct comp_dev *dev = mod->dev;
struct nxp_eap_data *eap = module_get_private_data(mod);
Copy link
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

@lgirdwood lgirdwood added this to the v2.13 milestone May 16, 2025
@lgirdwood
Copy link
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
Collaborator Author

dbaluta commented May 16, 2025

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
Collaborator

kv2019i commented May 19, 2025

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:main May 19, 2025
39 of 48 checks passed
Sign up for free to 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.

4 participants