Skip to content

Commit

Permalink
Tools: Testbench: Switch testbench to IPC4 mode
Browse files Browse the repository at this point in the history
The library_defconfig is changed to CONFIG_IPC_MAJOR_4=y.

To prepare release of testbench with SOF the executable name
is changed to sof-testbench4.

The script comp_run.sh for process_test.m and other test scripts
is changed to execute the IPC4 testbench version with use of
other topology v2 topologies sof-hda-benchmark-<comp><bits>.tplg.

the script host-testbench.sh is changed to run tests for
component names in IPC4 test topologies.

TODO: Fix valgrind issue in testbench, fix audio quality issue
in config blob for multiband-DRC.

Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
  • Loading branch information
singalsu committed Oct 17, 2024
1 parent c56ee08 commit 5396065
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 32 deletions.
20 changes: 12 additions & 8 deletions scripts/host-testbench.sh
Original file line number Diff line number Diff line change
Expand Up @@ -86,17 +86,17 @@ head -c ${INPUT_FILE_SIZE} < /dev/zero > zeros_in.raw
FullTest=${FullTest:-0}

# test with volume
test_component volume 16 16 48000 "$FullTest"
test_component volume 24 24 48000 "$FullTest"
test_component volume 32 32 48000 "$FullTest"
test_component gain 16 16 48000 "$FullTest"
test_component gain 24 24 48000 "$FullTest"
test_component gain 32 32 48000 "$FullTest"

# test with eq-iir
test_component eq-iir 16 16 48000 "$FullTest"
test_component eq-iir 24 24 48000 "$FullTest"
test_component eq-iir 32 32 48000 "$FullTest"
test_component eqiir 16 16 48000 "$FullTest"
test_component eqiir 24 24 48000 "$FullTest"
test_component eqiir 32 32 48000 "$FullTest"

# test with eq-fir
test_component eq-fir 32 32 48000 "$FullTest"
test_component eqfir 32 32 48000 "$FullTest"

# test with dcblock
test_component dcblock 32 32 48000 "$FullTest"
Expand All @@ -105,7 +105,11 @@ test_component dcblock 32 32 48000 "$FullTest"
test_component drc 32 32 48000 "$FullTest"

# test with multiband-drc
test_component multiband-drc 32 32 48000 "$FullTest"
# TODO: Make a default blob that doesn't fail
# to audio quality issues. IPC3 blob that
# worked is pass-through so it's not very
# interesting to test.
#test_component drc_multiband 32 32 48000 "$FullTest"

# test with src
test_component src 24 24 48000 "$FullTest"
Expand Down
4 changes: 2 additions & 2 deletions src/arch/host/configs/library_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ CONFIG_COMP_VOLUME=y
CONFIG_COMP_VOLUME_LINEAR_RAMP=y
CONFIG_COMP_VOLUME_WINDOWS_FADE=y
CONFIG_DEBUG_MEMORY_USAGE_SCAN=n
CONFIG_IPC_MAJOR_3=y
CONFIG_IPC_MAJOR_4=n
CONFIG_IPC_MAJOR_3=n
CONFIG_IPC_MAJOR_4=y
CONFIG_LIBRARY=y
CONFIG_LIBRARY_STATIC=y
CONFIG_MATH_IIR_DF2T=y
Expand Down
28 changes: 22 additions & 6 deletions tools/test/audio/comp_run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Where volume_config.sh could be e.g. next. Minimal configuration need is only
the COMP line.
# Volume component configuration
COMP=volume
COMP=gain
DIRECTION=playback
BITS_IN=16
BITS_OUT=16
Expand All @@ -29,6 +29,7 @@ FN_OUT=output.raw
FN_TRACE:=trace.txt # This is default value if FN_TRACE is not set via -e option
VALGRIND=true
XTRUN=
TESTBENCH=sof-testbench4
EOFHELP
}

Expand All @@ -48,6 +49,7 @@ parse_args ()
FN_TRACE=
EXTRA_OPTS=
XTRUN=
TESTBENCH=sof-testbench4

while getopts ":he:t:" opt; do
case "${opt}" in
Expand Down Expand Up @@ -134,10 +136,10 @@ TPLG_DIR=../../build_tools/test/topology

# Testbench path and executable
if [[ -z $XTRUN ]]; then
TESTBENCH=../../testbench/build_testbench/install/bin/testbench
PATH_TESTBENCH=../../testbench/build_testbench/install/bin/$TESTBENCH
else
BUILD_DIR=../../testbench/build_xt_testbench
TESTBENCH="$BUILD_DIR"/testbench
PATH_TESTBENCH="$BUILD_DIR"/$TESTBENCH
source "$BUILD_DIR"/xtrun_env.sh
XTRUN_CMD=$XTENSA_PATH/$XTRUN
if $VALGRIND; then
Expand All @@ -152,17 +154,31 @@ else
VALGRIND_CMD=
fi

HOST_EXE="$XTRUN_CMD $TESTBENCH"
HOST_EXE="$XTRUN_CMD $PATH_TESTBENCH"

# Use topology from component test topologies
INFMT=s${BITS_IN}le
OUTFMT=s${BITS_OUT}le
TPLGFN=test-${DIRECTION}-ssp5-mclk-0-I2S-${COMP}-${INFMT}-${OUTFMT}-48k-24576k-codec.tplg
TPLG_BUILD_TIP="Please run scripts/build-tools.sh -t"
PIPELINES=

[[ $TESTBENCH == "sof-testbench4" ]] && {
# With comp benchmark topologies for playback use pipelines 1-2, for capture 3-4
[[ $DIRECTION == "playback" ]] && PIPELINES="-p 1,2"
[[ $DIRECTION == "capture" ]] && PIPELINES="-p 3,4"
TPLGFN=sof-hda-benchmark-${COMP}${BITS_IN}.tplg
TPLG_DIR="../../build_tools/topology/topology2/development"
TPLG_BUILD_TIP="Please run scripts/build-tools.sh"
# Hack, remove this and enable valgrind
VALGRIND_CMD=
}

TPLG=${TPLG_DIR}/${TPLGFN}
[ -f "$TPLG" ] || {
echo
echo "Error: topology $TPLG does not exist."
echo "Please run scripts/build-tools.sh -t"
echo "$TPLG_BUILD_TIP"
exit 1
}

Expand All @@ -174,7 +190,7 @@ else
fi

# Run command
OPTS="$DEBUG -r $FS_IN -R $FS_OUT -c $CHANNELS_IN -n $CHANNELS_OUT $BINFMT -t $TPLG"
OPTS="$DEBUG -r $FS_IN -R $FS_OUT -c $CHANNELS_IN -n $CHANNELS_OUT $BINFMT $PIPELINES -t $TPLG"
DATA="-i $FN_IN -o $FN_OUT"
ARG="$OPTS $EXTRA_OPTS $DATA"
CMD="$HOST_EXE $ARG"
Expand Down
32 changes: 16 additions & 16 deletions tools/testbench/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ include(CheckCCompilerFlag)

set(default_asoc_h "/usr/include/alsa/sound/uapi/asoc.h")

add_executable(testbench
add_executable(sof-testbench4
testbench.c
file.c
utils.c
Expand All @@ -19,37 +19,37 @@ add_executable(testbench
topology_ipc4.c
)

sof_append_relative_path_definitions(testbench)
sof_append_relative_path_definitions(sof-testbench4)

target_include_directories(testbench PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(sof-testbench4 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)

set(sof_source_directory "${PROJECT_SOURCE_DIR}/../..")
set(sof_install_directory "${PROJECT_BINARY_DIR}/sof_ep/install")
set(sof_binary_directory "${PROJECT_BINARY_DIR}/sof_ep/build")

set(config_h ${sof_binary_directory}/library_autoconfig.h)

target_include_directories(testbench PRIVATE "${sof_source_directory}/src/platform/library/include")
target_include_directories(testbench PRIVATE "${sof_source_directory}/src/audio")
target_include_directories(sof-testbench4 PRIVATE "${sof_source_directory}/src/platform/library/include")
target_include_directories(sof-testbench4 PRIVATE "${sof_source_directory}/src/audio")

# Configuration time, make copy
configure_file(${default_asoc_h} ${CMAKE_CURRENT_BINARY_DIR}/include/alsa/sound/asoc.h)

# Build time
target_include_directories(testbench PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")
target_include_directories(sof-testbench4 PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/include")

# -Wimplicit-fallthrough is preferred, check if it's supported
check_c_compiler_flag(-Wimplicit-fallthrough supports_implicit_fallthrough)
if (supports_implicit_fallthrough)
set(implicit_fallthrough -Wimplicit-fallthrough)
endif()

target_compile_options(testbench PRIVATE -g -O3 -Wall -Werror -Wmissing-prototypes
target_compile_options(sof-testbench4 PRIVATE -g -O3 -Wall -Werror -Wmissing-prototypes
${implicit_fallthrough} -DCONFIG_LIBRARY -DCONFIG_LIBRARY_STATIC -imacros${config_h})

target_link_libraries(testbench PRIVATE -lm)
target_link_libraries(sof-testbench4 PRIVATE -lm)

install(TARGETS testbench DESTINATION bin)
install(TARGETS sof-testbench4 DESTINATION bin)

include(ExternalProject)

Expand Down Expand Up @@ -94,14 +94,14 @@ add_library(sof_parser_lib STATIC IMPORTED)
set_target_properties(sof_parser_lib PROPERTIES IMPORTED_LOCATION "${parser_install_dir}/lib/libsof_tplg_parser.a")
add_dependencies(sof_parser_lib parser_ep)

add_dependencies(testbench sof_parser_lib)
target_link_libraries(testbench PRIVATE sof_library)
target_link_libraries(testbench PRIVATE sof_parser_lib)
target_link_libraries(testbench PRIVATE m)
target_include_directories(testbench PRIVATE ${sof_install_directory}/include)
target_include_directories(testbench PRIVATE ${parser_install_dir}/include)
add_dependencies(sof-testbench4 sof_parser_lib)
target_link_libraries(sof-testbench4 PRIVATE sof_library)
target_link_libraries(sof-testbench4 PRIVATE sof_parser_lib)
target_link_libraries(sof-testbench4 PRIVATE m)
target_include_directories(sof-testbench4 PRIVATE ${sof_install_directory}/include)
target_include_directories(sof-testbench4 PRIVATE ${parser_install_dir}/include)

set_target_properties(testbench
set_target_properties(sof-testbench4
PROPERTIES
INSTALL_RPATH "${sof_install_directory}/lib"
INSTALL_RPATH_USE_LINK_PATH TRUE
Expand Down

0 comments on commit 5396065

Please sign in to comment.