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
When MFCC_FFT_BITS is 32, the HiFi3/4 mfcc_fill_fft_buffer() used
AE_S16_0_XP to write 16-bit samples into 32-bit icomplex32 containers.
This left the upper 16 bits of .real with stale data and .imag unzeroed,
causing corrupted FFT input after the first frame when scratch buffers
are reused for power_spectra and mel_log_32.
Replace all platform-specific implementations with a single generic C
version in mfcc_common.c. The function performs only data copying with
no arithmetic, so HiFi intrinsics provide very little benefit. The new
implementation uses int32_t pointer type with matching element stride,
and relies on the caller's bzero of fft_buf to keep imaginary parts
zero.
Fix mel_log_32 scratch space check to use fft_buffer_size instead of
assuming sizeof(icomplex32) per element, which overestimated available
space by 2x.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
0 commit comments