From f711a025b197660653c107b8c73acbb5e939b553 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Thu, 4 May 2023 16:37:22 +0300 Subject: [PATCH 1/3] Tools: Topology2: No mandatory rate_out to support capture SRC This patch removes rule to require fixed rate_out for SRC widget. A capture SRC in host pipeline or near it has typically variable output rate. Signed-off-by: Seppo Ingalsuo --- tools/topology/topology2/include/components/src.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/topology/topology2/include/components/src.conf b/tools/topology/topology2/include/components/src.conf index 1cb7e18699d7..abb07bc5723e 100644 --- a/tools/topology/topology2/include/components/src.conf +++ b/tools/topology/topology2/include/components/src.conf @@ -54,7 +54,6 @@ Class.Widget."src" { ] !mandatory [ - "rate_out" "num_input_audio_formats" "num_output_audio_formats" "num_input_pins" From cc91033ba6be4fdff445732be96e3791b1d65b69 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Thu, 4 May 2023 16:52:15 +0300 Subject: [PATCH 2/3] Tools: Topology2: Use more specific src format .conf files This patch replaces src_format.conf and src_passthrough_format.conf with more specific formats definitions for host copiers, pass-through components, playback src, and capture src. The DSP internal pipelines are 32 bits, so src_s32_passthrough.conf is used for components like gain those pass the 8 - 192 kHz rates with s32 format. The formats in src_format_sxx_to_s32_convert.conf is for use for for playback host copier. Input formats are s16/24/32 and the only output format is s32. Similarly the src_format_s32_to_sxx_convert.conf is for capture host copier. The formats for playback SRC are in src_format_s32_convert_to_48k.conf, and the formats for capture are in src_format_s32_convert_from_48k.conf. The new formats definitions use the input_audio_format and output_audio_format objects instead of audio_format. The unnecessary word lengths are removed to minimize the formats count in every component. The pipelines host-copier-gain-src-mixin-playback.conf and src-gain-mixin-playback.conf those used the previous format definitions are updated with these changes. Signed-off-by: Seppo Ingalsuo --- .../src_format_s32_convert_from_48k.conf | 103 +++++ .../src_format_s32_convert_to_48k.conf | 99 +++++ .../src_format_s32_passthrough.conf | 178 ++++++++ .../src_format_s32_to_sxx_convert.conf | 346 +++++++++++++++ ...onf => src_format_sxx_to_s32_convert.conf} | 302 ++++++++----- .../components/src_passthrough_format.conf | 395 ------------------ .../host-copier-gain-src-mixin-playback.conf | 6 +- .../cavs/src-gain-mixin-playback.conf | 4 +- 8 files changed, 936 insertions(+), 497 deletions(-) create mode 100644 tools/topology/topology2/include/components/src_format_s32_convert_from_48k.conf create mode 100644 tools/topology/topology2/include/components/src_format_s32_convert_to_48k.conf create mode 100644 tools/topology/topology2/include/components/src_format_s32_passthrough.conf create mode 100644 tools/topology/topology2/include/components/src_format_s32_to_sxx_convert.conf rename tools/topology/topology2/include/components/{src_format.conf => src_format_sxx_to_s32_convert.conf} (68%) delete mode 100644 tools/topology/topology2/include/components/src_passthrough_format.conf diff --git a/tools/topology/topology2/include/components/src_format_s32_convert_from_48k.conf b/tools/topology/topology2/include/components/src_format_s32_convert_from_48k.conf new file mode 100644 index 000000000000..2185581258dc --- /dev/null +++ b/tools/topology/topology2/include/components/src_format_s32_convert_from_48k.conf @@ -0,0 +1,103 @@ +#src format array + num_output_audio_formats 14 + + Object.Base.output_audio_format [ + # 8khz output + { + out_rate 8000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[($out_channels * (($[($out_rate + 999)] / 1000) + 4)) * ($out_bit_depth / 8)]" + } + # 12khz output + { + out_rate 12000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[($out_channels * (($[($out_rate + 999)] / 1000) + 4)) * ($out_bit_depth / 8)]" + } + # 48khz output + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 64khz output + { + out_rate 64000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[($out_channels * (($[($out_rate + 999)] / 1000) + 4)) * ($out_bit_depth / 8)]" + } + # 96khz output + { + out_rate 96000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 32 + out_valid_bit_depth 32 + obs "$[($out_channels * (($[($out_rate + 999)] / 1000) + 4)) * ($out_bit_depth / 8)]" + } + # 192khz output + { + out_rate 192000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] + + num_input_audio_formats 1 + + Object.Base.input_audio_format [ + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] diff --git a/tools/topology/topology2/include/components/src_format_s32_convert_to_48k.conf b/tools/topology/topology2/include/components/src_format_s32_convert_to_48k.conf new file mode 100644 index 000000000000..f20af68b3c3a --- /dev/null +++ b/tools/topology/topology2/include/components/src_format_s32_convert_to_48k.conf @@ -0,0 +1,99 @@ +#src format array + num_input_audio_formats 14 + + Object.Base.input_audio_format [ + # 8khz input + { + in_rate 8000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 11.025 khz input + { + in_rate 11025 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 12khz input + { + in_rate 12000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 16khz input + { + in_rate 16000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 22.05khz input + { + in_rate 22050 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 24khz input + { + in_rate 24000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 32khz input + { + in_rate 32000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 44.1khz input + { + in_rate 44100 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 48khz input + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 64khz input + { + in_rate 64000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 88.2khz input + { + in_rate 88200 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 96khz input + { + in_rate 96000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 176.4khz input + { + in_rate 176400 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 192khz input + { + in_rate 192000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + + num_output_audio_formats 1 + + Object.Base.output_audio_format [ + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] diff --git a/tools/topology/topology2/include/components/src_format_s32_passthrough.conf b/tools/topology/topology2/include/components/src_format_s32_passthrough.conf new file mode 100644 index 000000000000..adc8a391ef6b --- /dev/null +++ b/tools/topology/topology2/include/components/src_format_s32_passthrough.conf @@ -0,0 +1,178 @@ +#src format array + num_input_audio_formats 14 + + Object.Base.input_audio_format [ + # 8khz input + { + in_rate 8000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 11.025 khz input + { + in_rate 11025 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 12khz input + { + in_rate 12000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 16khz input + { + in_rate 16000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 22.05khz input + { + in_rate 22050 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 24khz input + { + in_rate 24000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 32khz input + { + in_rate 32000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 44.1khz input + { + in_rate 44100 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 48khz input + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 64khz input + { + in_rate 64000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 88.2khz input + { + in_rate 88200 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 96khz input + { + in_rate 96000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 176.4khz input + { + in_rate 176400 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 192khz input + { + in_rate 192000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + + num_output_audio_formats 14 + + Object.Base.output_audio_format [ + # 8khz output + { + out_rate 8000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 12khz output + { + out_rate 12000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 48khz output + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 64khz output + { + out_rate 64000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 96khz output + { + out_rate 96000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 192khz output + { + out_rate 192000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] diff --git a/tools/topology/topology2/include/components/src_format_s32_to_sxx_convert.conf b/tools/topology/topology2/include/components/src_format_s32_to_sxx_convert.conf new file mode 100644 index 000000000000..a76ba74ab2de --- /dev/null +++ b/tools/topology/topology2/include/components/src_format_s32_to_sxx_convert.conf @@ -0,0 +1,346 @@ +#src format array + num_input_audio_formats 14 + + Object.Base.input_audio_format [ + # 8khz input + { + in_rate 8000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 11.025 khz input + { + in_rate 11025 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 12khz input + { + in_rate 12000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 16khz input + { + in_rate 16000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 22.05khz input + { + in_rate 22050 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 24khz input + { + in_rate 24000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 32khz input + { + in_rate 32000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 44.1khz input + { + in_rate 44100 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 48khz input + { + in_rate 48000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 64khz input + { + in_rate 64000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 88.2khz input + { + in_rate 88200 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 96khz input + { + in_rate 96000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 176.4khz input + { + in_rate 176400 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 192khz input + { + in_rate 192000 + in_bit_depth 32 + in_valid_bit_depth 32 + } + ] + + num_output_audio_formats 42 + + Object.Base.output_audio_format [ + # 8khz output + { + out_rate 8000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 12khz output + { + out_rate 12000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 48khz output + { + out_rate 48000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 64khz output + { + out_rate 64000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 96khz output + { + out_rate 96000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 192khz output + { + out_rate 192000 + out_bit_depth 16 + out_valid_bit_depth 16 + } + # 8khz output + { + out_rate 8000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 12khz output + { + out_rate 12000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 48khz output + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 64khz output + { + out_rate 64000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 96khz output + { + out_rate 96000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 192khz output + { + out_rate 192000 + out_bit_depth 32 + out_valid_bit_depth 24 + } + # 8khz output + { + out_rate 8000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 12khz output + { + out_rate 12000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 48khz output + { + out_rate 48000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 64khz output + { + out_rate 64000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 96khz output + { + out_rate 96000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 192khz output + { + out_rate 192000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + ] diff --git a/tools/topology/topology2/include/components/src_format.conf b/tools/topology/topology2/include/components/src_format_sxx_to_s32_convert.conf similarity index 68% rename from tools/topology/topology2/include/components/src_format.conf rename to tools/topology/topology2/include/components/src_format_sxx_to_s32_convert.conf index 6fc582f0cf0b..0518fb2d2a6f 100644 --- a/tools/topology/topology2/include/components/src_format.conf +++ b/tools/topology/topology2/include/components/src_format_sxx_to_s32_convert.conf @@ -4,222 +4,251 @@ Object.Base.input_audio_format [ # 8khz input { - in_rate 8000 + in_rate 8000 in_bit_depth 16 in_valid_bit_depth 16 } - { - in_rate 8000 - in_bit_depth 32 - in_valid_bit_depth 24 - } - { - in_bit_depth 32 - in_valid_bit_depth 32 - } # 11.025 khz input { in_rate 11025 in_bit_depth 16 in_valid_bit_depth 16 } + # 12khz input { - in_rate 11025 - in_bit_depth 32 - in_valid_bit_depth 24 + in_rate 12000 + in_bit_depth 16 + in_valid_bit_depth 16 } + # 16khz input { - in_rate 11025 - in_bit_depth 32 - in_valid_bit_depth 32 + in_rate 16000 + in_bit_depth 16 + in_valid_bit_depth 16 } - # 12khz input + # 22.05khz input { - in_rate 12000 + in_rate 22050 in_bit_depth 16 in_valid_bit_depth 16 } + # 24khz input { - in_rate 12000 - in_bit_depth 32 - in_valid_bit_depth 24 + in_rate 24000 + in_bit_depth 16 + in_valid_bit_depth 16 } + # 32khz input { - in_rate 12000 - in_bit_depth 32 - in_valid_bit_depth 32 + in_rate 32000 + in_bit_depth 16 + in_valid_bit_depth 16 } - # 16khz input + # 44.1khz input { - in_rate 16000 + in_rate 44100 in_bit_depth 16 in_valid_bit_depth 16 } + # 48khz input { - in_rate 16000 - in_bit_depth 32 - in_valid_bit_depth 24 + in_rate 48000 + in_bit_depth 16 + in_valid_bit_depth 16 } + # 64khz input { - in_rate 16000 - in_bit_depth 32 - in_valid_bit_depth 32 + in_rate 64000 + in_bit_depth 16 + in_valid_bit_depth 16 } - # 22.05khz input + # 88.2khz input { - in_rate 22050 + in_rate 88200 in_bit_depth 16 in_valid_bit_depth 16 } + # 96khz input { - in_rate 22050 - in_bit_depth 32 - in_valid_bit_depth 24 + in_rate 96000 + in_bit_depth 16 + in_valid_bit_depth 16 } + # 176.4khz input { - in_rate 22050 - in_bit_depth 32 - in_valid_bit_depth 32 + in_rate 176400 + in_bit_depth 16 + in_valid_bit_depth 16 } - # 24khz input + # 192khz input { - in_rate 24000 + in_rate 192000 in_bit_depth 16 in_valid_bit_depth 16 } + # 8khz input { - in_rate 24000 + in_rate 8000 in_bit_depth 32 in_valid_bit_depth 24 } + # 11.025 khz input { - in_rate 24000 + in_rate 11025 in_bit_depth 32 - in_valid_bit_depth 32 + in_valid_bit_depth 24 } - # 32khz input + # 12khz input { - in_rate 32000 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 12000 + in_bit_depth 32 + in_valid_bit_depth 24 } + # 16khz input { - in_rate 32000 + in_rate 16000 in_bit_depth 32 in_valid_bit_depth 24 } + # 22.05khz input { - in_rate 32000 + in_rate 22050 in_bit_depth 32 - in_valid_bit_depth 32 + in_valid_bit_depth 24 } - # 44.1khz input + # 24khz input { - in_rate 44100 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 24000 + in_bit_depth 32 + in_valid_bit_depth 24 } + # 32khz input { - in_rate 44100 + in_rate 32000 in_bit_depth 32 in_valid_bit_depth 24 } + # 44.1khz input { in_rate 44100 in_bit_depth 32 - in_valid_bit_depth 32 + in_valid_bit_depth 24 } # 48khz input { in_rate 48000 - in_bit_depth 16 - in_valid_bit_depth 16 + in_bit_depth 32 + in_valid_bit_depth 24 } + # 64khz input { - in_rate 48000 + in_rate 64000 in_bit_depth 32 in_valid_bit_depth 24 } + # 88.2khz input { - in_rate 48000 + in_rate 88200 in_bit_depth 32 - in_valid_bit_depth 32 + in_valid_bit_depth 24 } - # 64khz input + # 96khz input { - in_rate 64000 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 96000 + in_bit_depth 32 + in_valid_bit_depth 24 } + # 176.4khz input { - in_rate 64000 + in_rate 176400 in_bit_depth 32 in_valid_bit_depth 24 } + # 192khz input { - in_rate 64000 + in_rate 192000 + in_bit_depth 32 + in_valid_bit_depth 24 + } + # 8khz input + { + in_rate 8000 in_bit_depth 32 in_valid_bit_depth 32 } - # 88.2khz input + # 11.025 khz input { - in_rate 88200 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 11025 + in_bit_depth 32 + in_valid_bit_depth 32 } + # 12khz input { - in_rate 88200 + in_rate 12000 in_bit_depth 32 - in_valid_bit_depth 24 + in_valid_bit_depth 32 } + # 16khz input { - in_rate 88200 + in_rate 16000 in_bit_depth 32 in_valid_bit_depth 32 } - # 96khz input + # 22.05khz input { - in_rate 96000 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 22050 + in_bit_depth 32 + in_valid_bit_depth 32 } + # 24khz input { - in_rate 96000 + in_rate 24000 in_bit_depth 32 - in_valid_bit_depth 24 + in_valid_bit_depth 32 } + # 32khz input { - in_rate 96000 + in_rate 32000 in_bit_depth 32 in_valid_bit_depth 32 } - # 176.4khz input + # 44.1khz input { - in_rate 176400 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 44100 + in_bit_depth 32 + in_valid_bit_depth 32 } + # 48khz input { - in_rate 176400 + in_rate 48000 in_bit_depth 32 - in_valid_bit_depth 24 + in_valid_bit_depth 32 } + # 64khz input { - in_rate 176400 + in_rate 64000 in_bit_depth 32 in_valid_bit_depth 32 } - # 192khz input + # 88.2khz input { - in_rate 192000 - in_bit_depth 16 - in_valid_bit_depth 16 + in_rate 88200 + in_bit_depth 32 + in_valid_bit_depth 32 } + # 96khz input { - in_rate 192000 + in_rate 96000 in_bit_depth 32 - in_valid_bit_depth 24 + in_valid_bit_depth 32 } + # 176.4khz input + { + in_rate 176400 + in_bit_depth 32 + in_valid_bit_depth 32 + } + # 192khz input { in_rate 192000 in_bit_depth 32 @@ -227,12 +256,91 @@ } ] - num_output_audio_formats 1 + num_output_audio_formats 14 Object.Base.output_audio_format [ + # 8khz output + { + out_rate 8000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 11.025 khz output + { + out_rate 11025 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 12khz output + { + out_rate 12000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 16khz output + { + out_rate 16000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 22.05khz output + { + out_rate 22050 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 24khz output + { + out_rate 24000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 32khz output + { + out_rate 32000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 44.1khz output + { + out_rate 44100 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 48khz output { out_rate 48000 out_bit_depth 32 out_valid_bit_depth 32 } + # 64khz output + { + out_rate 64000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 88.2khz output + { + out_rate 88200 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 96khz output + { + out_rate 96000 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 176.4khz output + { + out_rate 176400 + out_bit_depth 32 + out_valid_bit_depth 32 + } + # 192khz output + { + out_rate 192000 + out_bit_depth 32 + out_valid_bit_depth 32 + } ] diff --git a/tools/topology/topology2/include/components/src_passthrough_format.conf b/tools/topology/topology2/include/components/src_passthrough_format.conf deleted file mode 100644 index 898a6adbbebf..000000000000 --- a/tools/topology/topology2/include/components/src_passthrough_format.conf +++ /dev/null @@ -1,395 +0,0 @@ -#src format array - num_input_audio_formats 42 - num_output_audio_formats 42 - - # 8khz input - Object.Base.audio_format.1 { - in_rate 8000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 8000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.2 { - in_rate 8000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 8000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.3{ - in_rate 8000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 8000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 11.025 khz input - Object.Base.audio_format.4 { - in_rate 11025 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 11025 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.5 { - in_rate 11025 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 11025 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.6{ - in_rate 11025 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 11025 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 12khz input - Object.Base.audio_format.7 { - in_rate 12000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 12000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.8 { - in_rate 12000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 12000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.9{ - in_rate 12000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 12000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 16khz input - Object.Base.audio_format.10 { - in_rate 16000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 16000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.11 { - in_rate 16000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 16000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.12{ - in_rate 16000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 16000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 22.05khz input - Object.Base.audio_format.13 { - in_rate 22050 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 22050 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.14 { - in_rate 22050 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 22050 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.15{ - in_rate 22050 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 22050 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - - # 24khz input - Object.Base.audio_format.16 { - in_rate 24000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 24000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.17 { - in_rate 24000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 24000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.18{ - in_rate 24000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 24000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 32khz input - Object.Base.audio_format.19 { - in_rate 32000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 32000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.20 { - in_rate 32000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 32000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.21 { - in_rate 32000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 32000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 44.1khz input - Object.Base.audio_format.22 { - in_rate 44100 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 44100 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.23 { - in_rate 44100 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 44100 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.24{ - in_rate 44100 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 44100 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 48khz input - Object.Base.audio_format.25 { - in_rate 48000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 48000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.26 { - in_rate 48000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 48000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.27 { - in_rate 48000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 48000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 64khz input - Object.Base.audio_format.28 { - in_rate 64000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 64000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.29 { - in_rate 64000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 64000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.30 { - in_rate 64000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 64000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - # 88.2khz input - Object.Base.audio_format.31 { - in_rate 88200 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 88200 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.32 { - in_rate 88200 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 88200 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.33 { - in_rate 88200 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 88200 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 96khz input - Object.Base.audio_format.34 { - in_rate 96000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 96000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.35 { - in_rate 96000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 96000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.36 { - in_rate 96000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 96000 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 176.4khz input - Object.Base.audio_format.37 { - in_rate 176400 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 176400 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.38 { - in_rate 176400 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 176400 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.39 { - in_rate 176400 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 176400 - out_bit_depth 32 - out_valid_bit_depth 32 - } - - # 192khz input - Object.Base.audio_format.40 { - in_rate 192000 - in_bit_depth 16 - in_valid_bit_depth 16 - out_rate 192000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.41 { - in_rate 192000 - in_bit_depth 32 - in_valid_bit_depth 24 - out_rate 192000 - out_bit_depth 32 - out_valid_bit_depth 24 - } - - Object.Base.audio_format.42 { - in_rate 192000 - in_bit_depth 32 - in_valid_bit_depth 32 - out_rate 192000 - out_bit_depth 32 - out_valid_bit_depth 32 - } diff --git a/tools/topology/topology2/include/pipelines/cavs/host-copier-gain-src-mixin-playback.conf b/tools/topology/topology2/include/pipelines/cavs/host-copier-gain-src-mixin-playback.conf index c8b3d5f4216a..05ab5ea46c05 100644 --- a/tools/topology/topology2/include/pipelines/cavs/host-copier-gain-src-mixin-playback.conf +++ b/tools/topology/topology2/include/pipelines/cavs/host-copier-gain-src-mixin-playback.conf @@ -52,17 +52,17 @@ Class.Pipeline."host-copier-gain-src-mixin-playback" { node_type $HDA_HOST_OUTPUT_CLASS num_output_pins 1 - + } gain."1" { - + } src."1" { rate_out 48000 - + } mixin."1" {} diff --git a/tools/topology/topology2/include/pipelines/cavs/src-gain-mixin-playback.conf b/tools/topology/topology2/include/pipelines/cavs/src-gain-mixin-playback.conf index aaab347faf37..36a2e29a7824 100644 --- a/tools/topology/topology2/include/pipelines/cavs/src-gain-mixin-playback.conf +++ b/tools/topology/topology2/include/pipelines/cavs/src-gain-mixin-playback.conf @@ -47,7 +47,7 @@ Class.Pipeline."src-gain-mixin-playback" { type "aif_in" num_output_pins 1 - + node_type $HDA_HOST_OUTPUT_CLASS } @@ -55,7 +55,7 @@ Class.Pipeline."src-gain-mixin-playback" { src."1" { rate_out 48000 - + } gain."1" { From d97a96305baa2111aa0cb4fb61b8e03d73ea5274 Mon Sep 17 00:00:00 2001 From: Seppo Ingalsuo Date: Tue, 23 May 2023 16:11:12 +0300 Subject: [PATCH 3/3] Tools: Topology2: Add SRC component to cavs-nocodec.conf topologies This patch adds 8 - 192 kHz playback and capture SRC to nocodec topologies such sof-tgl-nocodec.tplg. It enables testing of SRC component with IPC4 via the SSP loopback in the nocodec topologies E.g. Play random noise at 44.1 kHz and capture it as 32 kHz. The SSP loopback runs internally at 48 kHz. aplay -Dhw:0,2 -f S32_LE -c 2 -r 44100 -d 10 -t raw /dev/random arecord -Dhw:0,2 -f S16_LE -c 2 -r 32000 -d 10 /tmp/recording.wav Signed-off-by: Seppo Ingalsuo --- tools/topology/topology2/cavs-nocodec.conf | 133 +++++++++++++++------ 1 file changed, 95 insertions(+), 38 deletions(-) diff --git a/tools/topology/topology2/cavs-nocodec.conf b/tools/topology/topology2/cavs-nocodec.conf index 2a644d430587..bac1fe2118c7 100644 --- a/tools/topology/topology2/cavs-nocodec.conf +++ b/tools/topology/topology2/cavs-nocodec.conf @@ -18,6 +18,7 @@ + @@ -166,7 +167,7 @@ Object.Dai.SSP [ # Pipeline definitions # # PCM1 ---> gain ---> Mixin ---> Mixout ---> gain ---> SSP1 -# PCM2 ---> gain ---> Mixin ---> Mixout ---> gain ---> SSP2 +# PCM2 ---> gain ---> SRC ---> Mixin ---> Mixout ---> gain ---> SSP2 # PCM4 ---> gain ---> Mixin -------------------------->\ # PCM3 ---> gain ---> Mixin ---->\ \ # PCM0 ---> gain ---> Mixin ---> Mixout ---> Mixin ---> Mixout ---> gain ---> smart_amp ---> SSP0 @@ -174,7 +175,7 @@ Object.Dai.SSP [ # /---------------------------------------------------------------------->/ # SSP0 ---> PCM0 # SSP1 ---> PCM1 -# SSP2 ---> PCM2 +# SSP2 ---> SRC ---> PCM2 IncludeByKey.PASSTHROUGH { "false" { @@ -192,6 +193,9 @@ IncludeByKey.PASSTHROUGH { } } } + ] + + Object.Pipeline.host-copier-gain-src-mixin-playback [ { index 5 @@ -573,6 +577,14 @@ IncludeByKey.PASSTHROUGH { pcm_id 0 } } + { + index 11 + + Object.Widget.host-copier.1 { + stream_name 'SSP2 Capture' + pcm_id 2 + } + } ] Object.Pipeline.io-gateway-capture [ @@ -609,17 +621,6 @@ IncludeByKey.PASSTHROUGH { } } -Object.Pipeline.host-gateway-capture [ - { - index 11 - - Object.Widget.host-copier.1 { - stream_name 'SSP2 Capture' - pcm_id 2 - } - } -] - Object.Pipeline.io-gateway-capture [ { index 12 @@ -644,6 +645,26 @@ Object.Pipeline.io-gateway-capture [ IncludeByKey.PASSTHROUGH { "false" { + Object.Pipeline.host-gateway-capture [ + { + index 11 + + Object.Widget.host-copier.1 { + stream_name 'SSP2 Capture' + pcm_id 2 + + + } + } + ] + + Object.Widget.src.1 { + index 11 + rate_in 48000 + + + } + IncludeByKey.NUM_DMICS { "[1-4]" { Object.Pipeline.gain-capture [ @@ -786,26 +807,6 @@ Object.PCM.pcm [ formats 'S16_LE,S24_LE,S32_LE' } } - { - name "$SSP2_PCM_NAME" - id 2 - direction "duplex" - Object.Base.fe_dai.1 { - name "$SSP2_PCM_NAME" - } - - Object.PCM.pcm_caps.1 { - direction "playback" - name "SSP2 Playback" - formats 'S16_LE,S24_LE,S32_LE' - } - - Object.PCM.pcm_caps.2 { - direction "capture" - name "SSP2 Capture" - formats 'S16_LE,S24_LE,S32_LE' - } - } ] IncludeByKey.PASSTHROUGH { @@ -851,16 +852,60 @@ IncludeByKey.PASSTHROUGH { channels_max $NUM_DMICS } } + { + name "$SSP2_PCM_NAME" + id 2 + direction "duplex" + Object.Base.fe_dai.1 { + name "$SSP2_PCM_NAME" + } + + Object.PCM.pcm_caps.1 { + direction "playback" + name "SSP2 Playback" + formats 'S16_LE,S24_LE,S32_LE' + rate_min 8000 + rate_max 192000 + } + + Object.PCM.pcm_caps.2 { + direction "capture" + name "SSP2 Capture" + formats 'S16_LE,S24_LE,S32_LE' + rate_min 8000 + rate_max 192000 + } + } ] } } -Object.Base.route [ - { - source "dai-copier.SSP.NoCodec-2.capture" - sink "host-copier.2.capture" +IncludeByKey.PASSTHROUGH { +"true" { + Object.PCM.pcm [ + { + name "$SSP2_PCM_NAME" + id 2 + direction "duplex" + Object.Base.fe_dai.1 { + name "$SSP2_PCM_NAME" + } + + Object.PCM.pcm_caps.1 { + direction "playback" + name "SSP2 Playback" + formats 'S16_LE,S24_LE,S32_LE' + } + + Object.PCM.pcm_caps.2 { + direction "capture" + name "SSP2 Capture" + formats 'S16_LE,S24_LE,S32_LE' + } + } + ] } -] +} IncludeByKey.PASSTHROUGH { "false" { @@ -936,6 +981,14 @@ IncludeByKey.PASSTHROUGH { source "gain.17.1" sink "host-copier.$SSP0_CAPTURE_PCM_ID.capture" } + { + source "dai-copier.SSP.NoCodec-2.capture" + sink "src.11.1" + } + { + source "src.11.1" + sink "host-copier.2.capture" + } ] } "true" { @@ -952,6 +1005,10 @@ IncludeByKey.PASSTHROUGH { source "host-copier.2.playback" sink "dai-copier.SSP.NoCodec-2.playback" } + { + source "dai-copier.SSP.NoCodec-2.capture" + sink "host-copier.2.capture" + } ] } }