The generation of multiple tone frequencies failed due accidental
square matrix generation when mixed row and column vectors were added.
The new version uses only vectors in first dimension and avoids the
problem.
The license text format also is changed to current.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The added check and print helps the user to generate the array
configuration data and other beam pattern test related binary files
to carry out this test for TDFB (beamformer) component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Due to the missing semicolons the variable config_fn got printed
to screen unnecessarily.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The script to load back to Matlab or Octave the test input data
was missing from previous patch that introduced TDFB (beamformer)
component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The log() function returns -Inf for level measure for stream of
digital zeros. It is correct but requires extra handling in the
upper level functions to avoid unnecessary tests fails. Adding of
offset 1e-20 results to -196.99 dBFS be the smallest possible
reported value. The function remains sufficient for all audio
measurements with 16 - 32 bit formats.
The license text is also updated to current version.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The script adds tdfb_test.m to check the TDFB beam pattern
versus theoretical. It also measures the noise suppression
capability of the test beamformer in simulated diffuse and
random noise field.
As simple quick test this patch adds TDFB to cell array of
accepted components for process test.
Note: There tests can't be used until load of UUID based non-legacy
components is added to testbench. The scripts were used with earlier
legacy mode version of the component.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Let's stop ignoring build and test failures. Start gradually with the
scripts involved in testbench, more files later.
Follow-up to to bug #2752 "host-testbench.sh ignores errors" and commit
ab421466af ("CI: Travis: enable host testbnech again") and
ab421466aff826~1
Signed-off-by: Marc Herbert <marc.herbert@intel.com>
The main change in this patch is to allow process_test to use
frequency dependent masks for frequency response and THD+N. It
allows tests with pass/fail criteria for components like EQs
and DCblock. SRC test not really changed but the small changes
in passing test controls are updated there as well.
In EQs tests the process test can decode the theoretical response
from setup blob. The measured frequency response is compared to
that.
The test print and plot output look is improved for nicer reports.
The runtime plots opening is disabled for batch mode operation
but the plots now appear to test output directory in png format.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The criteria of overall -3 dB RMS attenuation was too tight
for sample EQ responses to pass. With new -6 dB criteria the
used EQ loudness responses do not trigger error.
The chirp test is only a quick generic component health check so this
is not critical. The other AES17 tests will catch minor characteristic
changes.
The other changes are cosmetic and improve result print and plot
output look.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The function getpid() is only available in Octave. Instead use
a random integer number as identification to avoid conflict with
possible several simultaneous simulations with temporary files.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds an Octave test script process_test.m to audio processing
components like FIR and IIR EQ.
Parts of src_test.m are moved to common functions to ease printing of
test results matrix.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Enable 3 simple test with host-testbench:
volume, src and eqiir
Usage:
./scripts/build-tools.sh -t
./scripts/host-build-all.sh
./scripts/host-testbench.sh
Signed-off-by: Pan Xiuli <xiuli.pan@linux.intel.com>
This patch adds the double quotes to shell scripts to avoid fails
with arguments or shell variables when there are space characters.
The processing components run scripts are all edited for better
structure with functions usage() and main() and with local variables
within functions.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The src_run.sh is converted into a generic component run script
that is called by new simple component specific scripts asrc_run.sh,
eqfir_run.sh, eqiir_run.sh, src_run.sh, and volume_run.sh.
Note: The testbench does not yet have fully working capture support
so the direction is not exposed yet.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the SRC to run with the updated test topologies
set. The script is also cleaned up a bit.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Chirp test signals confused the test signal begin marker position
seek and caused false test fails. The test stimulus may produce
stronger cross correlation level than the actual marker. Also
the check omitted that the cross correlation max could be negative
so the test was changed into power domain and use first/last
cross correlation peak above threshold as test begin/end position.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Gain of SRC varies by 1 dB due built-in attenuation in the filter
coefficients. It was added to avoid signal overshoots to distort
with some challenging music content. When a converter consists of
two filters in series the attenuation duplicates. While SRC is
missing the gain compensation the test criteria needs to be relaxed.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the locations of "make install" libraries default
install locations into shell script to run SRC test cases. The script
also now prints the used LD_LIBRARY path to ease setting up code
debugging.
The segfault of testbench executable is fixed by returning a valid
pointer reference instead of a NULL from test dummy function
arch_schedulers_get(). The rest of testbench version of schedule.c
was also updated to be like the current real version module.
Finally in the testbench.c main the file names string pointers are
initilizated to null as well as the word length parameter to avoid
a segfault if executable is started without command line arguments
to see the usage help text.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds a shell script sof_test_perf.sh that measures
gain, frequency response, and total harmonic distortion plus
noise for a remote device.
Matlab or Octave is needed. The shell script launches by default
Octave to process the signal generation and test results analysis
scripts.
The remote device must be set to be accessible by ssh without
passwords. An external high quality USB sound card is recommended
as analog interface to connect to test device's analog interface.
The configuration file sof_test_perf_config.m must be edited for
the remote device's user account, audio device, audio format, and
capture sound card audio device, and audio format.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
The tests created lot of unnecessary fails when testing with S16_LE
format. The test pass criteria for THD+N, DR is relaxed for tests
with 16 bit data.
Since the gain of SRC conversions was lowered to -1 dB the test
case for gain need to be updated. The gain is retrieved from
src_param() function. An exception is added for FS1 == FS2 case
when data is passed through. In that case expected gain is 0 dB.
The frequency response measurement grid does not necessarily cover
the exact upper frequency of pass-band. Therefore the min. upper
passband frequency is scaled by 0.99. This avoids measurement
technique related fails in test.
The chirp spectra test case was updated to use for RMS level criteria
for testing the level of signal. The peak level was less robust and
caused unnecessary test fails.
The option to not open plot windows during test is set. It improves
speed of test and avoids display clutter.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch updates the testbench binary path into current default
install location when built with scripts/host-build-all.sh.
The path to test topologies is updated also.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This patch adds 50 kHz into SRC generator script for std and tiny
profiles. The src generator script is cleaned up and the default
conversion matrix is moved into caller script for easier maintenance.
The plots appearance is improved and the generated coefficients code
look is improved to pass the git pre- and post-commit script
requirements.
The SRC test bench scripts are updated for changed locations. A SRC
playback topology is used for test bench and real device usage.
Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>