46395ec...
by
Ranjani Sridharan <email address hidden>
module_adapter: Modify reset API
Modify the definition of the reset API in the module adapter interface
to make sure that it should reset the module state back to
MODULE_INITIALIZED and free all memory that was allocated during the
prepare() callback. With this change, stopping and restarting streams
will always be guaranteed to invoke the module's prepare() callback.
Also, fix the passthrough and cadence codec implementation to follow the
new definition.
ipc4: volume: set volume config when volume is initialized
Found one issue on Linux platform that the initialized volume setting
by alsamixer doesn't make effect when playback is started. The reason
is that the volume config set is skipped when volume module is just
initialized. Now volume will be set when it is initialized. At this
time cd->channels is not initialized so use channal count in module
config.
Signed-off-by: Rander Wang <email address hidden>
32d4725...
by
Seppo Ingalsuo <email address hidden>
Drivers: DMIC: Fix risk for overflow in unmute ramp calculation
This patch adds cast to int64_t for the multiplication and adds 32 bit
saturation to ensure overflow of the product is not possible.
This function is used to calculate ramp time in IPC4 NHLT blob mode
where the time is not passed from topology. Currently rates up to
48 kHz remain under product int32_t range, so normally there is no
issue. However 96 kHz rate would always result to incorrect
LOGRAMP_TIME_MIN_MS (10 ms).
Signed-off-by: Seppo Ingalsuo <email address hidden>
This patch adds to header file sof/audio/format.h two new macros
for 16 * 16 fractional multiply. It's identical to 32 bit but the
name suggests that operands are 16 bit where case to int32_t is
sufficient for the product.
- The calculation of cd->max_frames is changed use Q_MULTSR_16X16()
- Max_lag calculation is added type cast to int64_t though it does
not overflow with 48 kHz. But it could overflow with 96 kHz rate.
- A comment about 64 bit type is added to calculation of thr
- src_x and src_y calculation is done with Q_MULTSR_16X16()
- az_slow calculation is done with Q_MULTSR_16X16
- deg calculation is done with Q_MULTSR_16X16
Signed-off-by: Seppo Ingalsuo <email address hidden>