From 13dd37e9b80794325630ff3c4c02b8b0e3ea522b Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Fri, 27 Sep 2024 11:51:58 +0300 Subject: [PATCH 1/2] Tools: Topology2: Add to benchmark topologies equalizers more options There is currently no default.conf, so the default is set to passthrough.conf. This patch also changes IIR topology build default response to "loudness" for better higher workload and easier to measure when checking that it's correct. This prepares for process_test.m components verification with ipc4 testbench. Signed-off-by: Seppo Ingalsuo --- .../topology2/development/tplg-targets-bench.cmake | 2 +- .../include/bench/eqfir_control_bytes_capture.conf | 8 +++++--- .../include/bench/eqfir_control_bytes_playback.conf | 8 +++++--- .../include/bench/eqiir_control_bytes_capture.conf | 11 +++++++++-- .../include/bench/eqiir_control_bytes_playback.conf | 11 +++++++++-- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/tools/topology/topology2/development/tplg-targets-bench.cmake b/tools/topology/topology2/development/tplg-targets-bench.cmake index 0f4c540bb846..93f2385dc09b 100644 --- a/tools/topology/topology2/development/tplg-targets-bench.cmake +++ b/tools/topology/topology2/development/tplg-targets-bench.cmake @@ -27,7 +27,7 @@ set(component_parameters "BENCH_DCBLOCK_PARAMS=default" "BENCH_DRC_PARAMS=enabled" "BENCH_DRC_MULTIBAND_PARAMS=default" - "BENCH_EQIIR_PARAMS=highpass_50hz_0db_48khz" + "BENCH_EQIIR_PARAMS=loudness" "BENCH_EQFIR_PARAMS=loudness" "BENCH_GAIN_PARAMS=default" "BENCH_IGO_NR_PARAMS=default" diff --git a/tools/topology/topology2/include/bench/eqfir_control_bytes_capture.conf b/tools/topology/topology2/include/bench/eqfir_control_bytes_capture.conf index a63e00c85ad9..ecde34e399e2 100644 --- a/tools/topology/topology2/include/bench/eqfir_control_bytes_capture.conf +++ b/tools/topology/topology2/include/bench/eqfir_control_bytes_capture.conf @@ -3,8 +3,10 @@ Object.Control.bytes."1" { name '$ANALOG_CAPTURE_PCM EQFIR bytes' IncludeByKey.BENCH_EQFIR_PARAMS { - "default" "include/components/eqfir/default.conf" - "loudness" "include/components/eqfir/loudness.conf" - "passthrough" "include/components/eqfir/passthrough.conf" + "default" "include/components/eqfir/passthrough.conf" + "flat" "include/components/eqfir/flat.conf" + "loudness" "include/components/eqfir/loudness.conf" + "midboost" "include/components/eqfir/midboost.conf" + "passthrough" "include/components/eqfir/passthrough.conf" } } diff --git a/tools/topology/topology2/include/bench/eqfir_control_bytes_playback.conf b/tools/topology/topology2/include/bench/eqfir_control_bytes_playback.conf index aa0c0c8da8ea..d65fd4606b7b 100644 --- a/tools/topology/topology2/include/bench/eqfir_control_bytes_playback.conf +++ b/tools/topology/topology2/include/bench/eqfir_control_bytes_playback.conf @@ -3,8 +3,10 @@ Object.Control.bytes."1" { name '$ANALOG_PLAYBACK_PCM EQFIR bytes' IncludeByKey.BENCH_EQFIR_PARAMS { - "default" "include/components/eqfir/default.conf" - "loudness" "include/components/eqfir/loudness.conf" - "passthrough" "include/components/eqfir/passthrough.conf" + "default" "include/components/eqfir/passthrough.conf" + "flat" "include/components/eqfir/flat.conf" + "loudness" "include/components/eqfir/loudness.conf" + "midboost" "include/components/eqfir/midboost.conf" + "passthrough" "include/components/eqfir/passthrough.conf" } } diff --git a/tools/topology/topology2/include/bench/eqiir_control_bytes_capture.conf b/tools/topology/topology2/include/bench/eqiir_control_bytes_capture.conf index a8b72846b969..f5f0b4ba968f 100644 --- a/tools/topology/topology2/include/bench/eqiir_control_bytes_capture.conf +++ b/tools/topology/topology2/include/bench/eqiir_control_bytes_capture.conf @@ -3,7 +3,14 @@ Object.Control.bytes."1" { name '$ANALOG_CAPTURE_PCM EQIIR bytes' IncludeByKey.BENCH_EQIIR_PARAMS { - "default" "include/components/eqiir/default.conf" - "highpass_50hz_0db_48khz" "include/components/eqiir/highpass_50hz_0db_48khz.conf" + "default" "include/components/eqiir/passthrough.conf" + "bandpass" "include/components/eqiir/bandpass.conf" + "bassboost" "include/components/eqiir/bassboost.conf" + "flat" "include/components/eqiir/flat.conf" + "loudness" "include/components/eqiir/loudness.conf" + "passthrough" "include/components/eqiir/passthrough.conf" + "highpass_20hz_0db_48khz" "include/components/eqiir/highpass_20hz_0db_48khz.conf" + "highpass_50hz_0db_48khz" "include/components/eqiir/highpass_50hz_0db_48khz.conf" + "highpass_100hz_0db_48khz" "include/components/eqiir/highpass_100hz_0db_48khz.conf" } } diff --git a/tools/topology/topology2/include/bench/eqiir_control_bytes_playback.conf b/tools/topology/topology2/include/bench/eqiir_control_bytes_playback.conf index 5ae6ad905ee4..8164586ae8aa 100644 --- a/tools/topology/topology2/include/bench/eqiir_control_bytes_playback.conf +++ b/tools/topology/topology2/include/bench/eqiir_control_bytes_playback.conf @@ -3,7 +3,14 @@ Object.Control.bytes."1" { name '$ANALOG_PLAYBACK_PCM EQIIR bytes' IncludeByKey.BENCH_EQIIR_PARAMS { - "default" "include/components/eqiir/default.conf" - "highpass_50hz_0db_48khz" "include/components/eqiir/highpass_50hz_0db_48khz.conf" + "default" "include/components/eqiir/passthrough.conf" + "bandpass" "include/components/eqiir/bandpass.conf" + "bassboost" "include/components/eqiir/bassboost.conf" + "flat" "include/components/eqiir/flat.conf" + "loudness" "include/components/eqiir/loudness.conf" + "passthrough" "include/components/eqiir/passthrough.conf" + "highpass_20hz_0db_48khz" "include/components/eqiir/highpass_20hz_0db_48khz.conf" + "highpass_50hz_0db_48khz" "include/components/eqiir/highpass_50hz_0db_48khz.conf" + "highpass_100hz_0db_48khz" "include/components/eqiir/highpass_100hz_0db_48khz.conf" } } From b0dc0a89a596412fc10e0349ead2eed441c09d06 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Fri, 4 Oct 2024 13:51:37 +0300 Subject: [PATCH 2/2] Tools: Topology2: Fix test topologies for Aria component The only accepted format for aria is S24_4LE while it was assumed to be S32_LE. This change enables Aria topologies to be loaded again after commit 1cc7a4c5b1b1 ("aria: change to S24_LE format processing"). There was also a mistake with capture pipeline index that caused failure with capture. Same pipeline 3 index was used in both playback and capture direction. The impacted topologies are sof-hda-benchmark-aria24.tplg and sof-hda-benchmark-generic.tplg. Signed-off-by: Seppo Ingalsuo --- .../topology2/cavs-benchmark-hda.conf | 213 +++++++++++++++++- .../development/tplg-targets-bench.cmake | 8 +- .../bench/{aria_s32.conf => aria_s24.conf} | 6 +- 3 files changed, 210 insertions(+), 17 deletions(-) rename tools/topology/topology2/include/bench/{aria_s32.conf => aria_s24.conf} (62%) diff --git a/tools/topology/topology2/cavs-benchmark-hda.conf b/tools/topology/topology2/cavs-benchmark-hda.conf index ca3a393c14ca..7d6f7f38a00a 100644 --- a/tools/topology/topology2/cavs-benchmark-hda.conf +++ b/tools/topology/topology2/cavs-benchmark-hda.conf @@ -9,6 +9,8 @@ Define { ANALOG_PLAYBACK_PCM 'Analog Playback' ANALOG_CAPTURE_PCM 'Analog Capture' HDA_ANALOG_DAI_NAME 'Analog' + HDA_ANALOG_CAPTURE_RATE 48000 + HDA_ANALOG_PLAYBACK_RATE 48000 } Object.Dai.HDA [ @@ -54,11 +56,45 @@ IncludeByKey.BENCH_CONFIG { { index 3 + Object.Widget.mixout.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] + } Object.Widget.dai-copier.1 { node_type $HDA_LINK_OUTPUT_CLASS stream_name $HDA_ANALOG_DAI_NAME dai_type "HDA" copier_type "HDA" + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] } } ] @@ -67,7 +103,41 @@ IncludeByKey.BENCH_CONFIG { { index 2 + Object.Widget.mixin.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] + } Object.Widget.gain.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] Object.Control.mixer.1 { name 'Post Mixer $ANALOG_PLAYBACK_PCM Volume' } @@ -75,23 +145,42 @@ IncludeByKey.BENCH_CONFIG { Object.Widget.aria.1 { num_input_audio_formats 1 num_output_audio_formats 1 - # 32-bit 48KHz 2ch Object.Base.input_audio_format [ { + in_rate $HDA_ANALOG_PLAYBACK_RATE in_bit_depth 32 - in_valid_bit_depth 32 + in_valid_bit_depth 24 } ] Object.Base.output_audio_format [ { + out_rate $HDA_ANALOG_PLAYBACK_RATE out_bit_depth 32 - out_valid_bit_depth 32 + out_valid_bit_depth 24 } ] Object.Control.bytes."1" { - name "SSP2 Aria Control" + name '$ANALOG_PLAYBACK_PCM ARIA bytes' } } + Object.Widget.mixout.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] + } } ] @@ -102,29 +191,115 @@ IncludeByKey.BENCH_CONFIG { Object.Widget.host-copier.1 { stream_name $ANALOG_PLAYBACK_PCM pcm_id 0 + num_input_audio_formats 3 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 16 + in_valid_bit_depth 16 + } + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] } Object.Widget.gain.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] Object.Control.mixer.1 { name 'Pre Mixer $ANALOG_PLAYBACK_PCM Volume' } } + Object.Widget.mixin.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_PLAYBACK_RATE + in_bit_depth 32 + in_valid_bit_depth 24 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_PLAYBACK_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + ] + } } ] host-gateway-capture [ { - index 3 + index 4 Object.Widget.host-copier.1 { stream_name $ANALOG_CAPTURE_PCM pcm_id 0 + num_input_audio_formats 1 + num_output_audio_formats 3 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_CAPTURE_RATE + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_CAPTURE_RATE + out_bit_depth 16 + out_valid_bit_depth 16 + } + { + out_rate $HDA_ANALOG_CAPTURE_RATE + out_bit_depth 32 + out_valid_bit_depth 24 + } + { + out_rate $HDA_ANALOG_CAPTURE_RATE + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] } } ] highpass-capture-be [ { - index 4 + index 5 direction capture Object.Widget.dai-copier."1" { @@ -138,18 +313,36 @@ IncludeByKey.BENCH_CONFIG { num_output_audio_formats 1 Object.Base.input_audio_format [ { + in_rate $HDA_ANALOG_CAPTURE_RATE in_bit_depth 32 in_valid_bit_depth 32 } ] Object.Base.output_audio_format [ { + out_rate $HDA_ANALOG_CAPTURE_RATE out_bit_depth 32 out_valid_bit_depth 32 } ] } Object.Widget.eqiir.1 { + num_input_audio_formats 1 + num_output_audio_formats 1 + Object.Base.input_audio_format [ + { + in_rate $HDA_ANALOG_CAPTURE_RATE + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + Object.Base.output_audio_format [ + { + out_rate $HDA_ANALOG_CAPTURE_RATE + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] Object.Control.bytes."1" { name '$ANALOG_CAPTURE_PCM IIR Eq' } @@ -174,10 +367,10 @@ IncludeByKey.BENCH_CONFIG { } { source 'dai-copier.HDA.$HDA_ANALOG_DAI_NAME.capture' - sink 'eqiir.4.1' + sink 'eqiir.5.1' } { - source 'eqiir.4.1' + source 'eqiir.5.1' sink 'host-copier.0.capture' } { @@ -191,8 +384,8 @@ IncludeByKey.BENCH_CONFIG { # Aria component # - "aria32" { - + "aria24" { + } # diff --git a/tools/topology/topology2/development/tplg-targets-bench.cmake b/tools/topology/topology2/development/tplg-targets-bench.cmake index 93f2385dc09b..e76aab343443 100644 --- a/tools/topology/topology2/development/tplg-targets-bench.cmake +++ b/tools/topology/topology2/development/tplg-targets-bench.cmake @@ -37,11 +37,11 @@ set(component_parameters "BENCH_TDFB_PARAMS=default" ) -set(components_s32 +set(components_s24 "aria" ) -set(component_parameters_s32 +set(component_parameters_s24 "BENCH_ARIA_PARAMS=default" ) @@ -55,8 +55,8 @@ foreach(sf ${sampleformats}) endforeach() # Add components with single format -set (sf "32") -foreach(comp bench_param IN ZIP_LISTS components_s32 component_parameters_s32) +set (sf "24") +foreach(comp bench_param IN ZIP_LISTS components_s24 component_parameters_s24) set(item "sof-hda-generic\;sof-hda-benchmark-${comp}${sf}\;HDA_CONFIG=benchmark,BENCH_CONFIG=${comp}${sf},${bench_param}") #message(STATUS "Item=" ${item}) list(APPEND TPLGS "${item}") diff --git a/tools/topology/topology2/include/bench/aria_s32.conf b/tools/topology/topology2/include/bench/aria_s24.conf similarity index 62% rename from tools/topology/topology2/include/bench/aria_s32.conf rename to tools/topology/topology2/include/bench/aria_s24.conf index 6cea0a9b0905..c8b0be21704c 100644 --- a/tools/topology/topology2/include/bench/aria_s32.conf +++ b/tools/topology/topology2/include/bench/aria_s24.conf @@ -1,13 +1,13 @@ # Created with script "./bench_comp_generate.sh aria" Object.Widget.aria.1 { index 1 - + } Object.Widget.aria.2 { index 3 - + } - +