-
Notifications
You must be signed in to change notification settings - Fork 349
smart_amp: add smart amplifier test component #2897
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
Conversation
22c66a3 to
544cb25
Compare
992fac8 to
72ebc07
Compare
|
@lgirdwood |
mmaka1
left a comment
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.
There could be some improvement applied in future version with a single loop in copy() and illustration of priority of the main input over the feedback source.
|
@singalsu Pls take a look at the *model*() helpers proposed. The PR re-uses the code in two components, kd and smart-amp-test. But there are others (eq*) that potentially could use (call into) them to reduce the footprint. Are they ready for re-use or need some adjustments? |
|
@mmaka1 The name "model" does not sound very generic, it's related to keyword and speech recognition paradigm but it's minor and could renamed. There's a bit more in similar EQ and beamformer functions to allow updates during streaming (I'm not sure this isn't capable - there's some code to prevent re-configuration with incomplete data and flag re-configuration when ready). All components have their own parsing but they could be harmonized and these for keyword look close. Reuse would also improve testing coverage. Like that recent unnoticed bug in FIR with memcpy_s() destination sized mismatch. |
|
I've updated the title so it obvious we dont merge until all dependencies are merged. |
|
Hi @lgirdwood this doesn't have dependency to #2788, it is basic driver for smart_amp component. |
|
@bkokoszx can you fix the checkpatch issues below, and change to use the RT UUID macros just updated from @ktrzcinx for smart_amp: |
This commit rewrites functions responsible for large config configuration from detect_test component and puts them in component.c file as generic ones - as a result they can be used by other components. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
This commit replaces private detector component functions with generic ones in order to remove code duplication. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
Smart amplifier should be used in following topology:
+------------------------------------------+
+------+ | +---+ +-------------+ +---+ +-------+ |
| Host |----->|Buf|->| Smart Amp |->|Buf|->|SSP Dai|-----------+
+------+ | +---+ +-------------+ +---+ +-------+ | |
+-----------------^------------------------+ |
| |
+---+ |
|Buf| |
+---+ |
^ |
+-----------------|--------------------------+ |
+------+ | +---+ +--------|------+ +---+ +-------+ | |
| Host |<-----|Buf|<-| Demux |<-|Buf|<-|SSP Dai|<--------+
+------+ | +---+ +---------------+ +---+ +-------+ |
+--------------------------------------------+
Smart amplifier test component does not implement any specific processing
algorithm at the moment. I can pass chosen channels from source (buffer
between Host and Smart amplifier) or feedback (buffer between Smart
amplifier and Demux component) buffers. Those channels are selected by
sending proper config to this component. Smart amplifier can be
configured via SOF_SMART_AMP_CONFIG or SOF_SMART_AMP_MODEL data
(similarly as it happens in detector case).
Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
|
@keyonjie @lgirdwood |
|
@bkokoszx can you check the CI, looks like UT failure. |
|
@lgirdwood |
|
@bkokoszx any blockers for merge now ? Subject says DNM |
|
@lgirdwood |
|
@lgirdwood we need this PR since tplg and driver are already run with assuming it merged for quite a long time. |
|
@lgirdwood |
Smart amplifier should be used in following topology:
Smart amplifier test component does not implement any specific processing
algorithm at the moment. I can pass chosen channels from source (buffer
between Host and Smart amplifier) or feedback (buffer between Smart
amplifier and Demux component) buffers. Those channels are selected by
sending proper config to this component. Smart amplifier can be
configured via SOF_SMART_AMP_CONFIG or SOF_SMART_AMP_MODEL data
(similarly as it happens in detector case).
This PR also rewrites functions responsible for large config configuration
from detect_test component and puts them in component.c file as
generic ones - as a result they can be used by other components.