Skip to content

Commit 969d644

Browse files
committed
tools: topology: add MFCC compress capture for jack and DMIC
Add sdw-jack-audio-feature-compress.conf (PCM 48, pipeline 132) and sdw-dmic-audio-feature-compress.conf (PCM 49, pipeline 133) for compress MFCC capture with DTX blobs. Fix buffer sizes: set MFCC obs and host-copier ibs/obs to 344 bytes (24-byte header + 80 x int32). Add mel and ceps compress topology targets for MTL and ARL. Rename normal MFCC topologies to *-mfcc-mel-normal for clarity. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent cdb1315 commit 969d644

9 files changed

Lines changed: 188 additions & 3 deletions

File tree

tools/topology/topology2/cavs-sdw.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,14 @@ IncludeByKey.SDW_JACK_AUDIO_FEATURE_CAPTURE {
254254
"true" "platform/intel/sdw-jack-audio-feature.conf"
255255
}
256256

257+
IncludeByKey.SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE {
258+
"true" "platform/intel/sdw-jack-audio-feature-compress.conf"
259+
}
260+
257261
IncludeByKey.SDW_DMIC_AUDIO_FEATURE_CAPTURE {
258262
"true" "platform/intel/sdw-dmic-audio-feature.conf"
259263
}
264+
265+
IncludeByKey.SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE {
266+
"true" "platform/intel/sdw-dmic-audio-feature-compress.conf"
267+
}

tools/topology/topology2/development/tplg-targets.cmake

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -479,11 +479,33 @@ SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,SDW_DMIC_STREAM=Capture-
479479
SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,COMPRESSED=true"
480480

481481
# Soundwire topologies with MFCC audio features capture
482-
"cavs-sdw\;sof-mtl-rt713-l0-rt1316-l12-mfcc\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,\
482+
"cavs-sdw\;sof-mtl-rt713-l0-rt1316-l12-mfcc-mel-normal\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,\
483483
HDMI1_ID=4,HDMI2_ID=5,HDMI3_ID=6,SDW_JACK_AUDIO_FEATURE_CAPTURE=true"
484484

485-
"cavs-sdw\;sof-arl-cs42l43-l0-cs35l56-l23-mfcc\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,SDW_DMIC=1,\
485+
"cavs-sdw\;sof-arl-cs42l43-l0-cs35l56-l23-mfcc-mel-normal\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,SDW_DMIC=1,\
486486
SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,SDW_DMIC_STREAM=Capture-SmartMic,\
487487
SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,\
488488
SDW_JACK_AUDIO_FEATURE_CAPTURE=true,SDW_DMIC_AUDIO_FEATURE_CAPTURE=true"
489+
490+
# Soundwire topologies with compress MFCC mel audio features capture
491+
"cavs-sdw\;sof-mtl-rt713-l0-rt1316-l12-mfcc-mel-compr\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,\
492+
HDMI1_ID=4,HDMI2_ID=5,HDMI3_ID=6,SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE=true,\
493+
MFCC_FRAME_BYTES=344,MFCC_BLOB=mel"
494+
495+
# Soundwire topologies with compress MFCC cepstral audio features capture
496+
"cavs-sdw\;sof-mtl-rt713-l0-rt1316-l12-mfcc-ceps-compr\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,\
497+
HDMI1_ID=4,HDMI2_ID=5,HDMI3_ID=6,SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE=true,\
498+
MFCC_FRAME_BYTES=76,MFCC_BLOB=ceps"
499+
500+
"cavs-sdw\;sof-arl-cs42l43-l0-cs35l56-l23-mfcc-mel-compr\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,SDW_DMIC=1,\
501+
SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,SDW_DMIC_STREAM=Capture-SmartMic,\
502+
SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,\
503+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE=true,SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE=true,\
504+
MFCC_FRAME_BYTES=344,MFCC_BLOB=mel"
505+
506+
"cavs-sdw\;sof-arl-cs42l43-l0-cs35l56-l23-mfcc-ceps-compr\;PLATFORM=mtl,NUM_SDW_AMP_LINKS=2,SDW_DMIC=1,\
507+
SDW_AMP_FEEDBACK=false,SDW_SPK_STREAM=Playback-SmartAmp,SDW_DMIC_STREAM=Capture-SmartMic,\
508+
SDW_JACK_OUT_STREAM=Playback-SimpleJack,SDW_JACK_IN_STREAM=Capture-SimpleJack,\
509+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE=true,SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE=true,\
510+
MFCC_FRAME_BYTES=76,MFCC_BLOB=ceps"
489511
)

tools/topology/topology2/include/common/common_definitions.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,5 +72,7 @@ Define {
7272
SDW_JACK_ECHO_REF false # No echo reference for 3.5mm jack
7373
SDW_SPK_ECHO_REF false # No echo reference for speaker
7474
SDW_JACK_AUDIO_FEATURE_CAPTURE false # No audio features capture for jack
75+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE false # No compress audio features capture for jack
7576
SDW_DMIC_AUDIO_FEATURE_CAPTURE false # No audio features capture for microphone
77+
SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE false # No compress audio features capture for microphone
7678
}

tools/topology/topology2/include/components/mfcc.conf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ Class.Widget."mfcc" {
4747

4848
!immutable [
4949
"uuid"
50-
"type"
5150
]
5251
!deprecated [
5352
"preload_count"

tools/topology/topology2/include/pipelines/cavs/host-gateway-src-mfcc-capture.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ Class.Pipeline."host-gateway-src-mfcc-capture" {
8585
out_bit_depth 32
8686
out_valid_bit_depth 32
8787
out_rate 16000
88+
# Compress output frame: header + coefficients.
89+
# Size set by MFCC_FRAME_BYTES Define.
90+
obs $MFCC_FRAME_BYTES
8891
}
8992
]
9093
}
@@ -101,13 +104,16 @@ Class.Pipeline."host-gateway-src-mfcc-capture" {
101104
in_bit_depth 32
102105
in_valid_bit_depth 32
103106
in_rate 16000
107+
# Match MFCC compress output frame size
108+
ibs $MFCC_FRAME_BYTES
104109
}
105110
]
106111
Object.Base.output_audio_format [
107112
{
108113
out_bit_depth 32
109114
out_valid_bit_depth 32
110115
out_rate 16000
116+
obs $MFCC_FRAME_BYTES
111117
}
112118
]
113119
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
Define {
2+
SDW_DMIC_MODULE_COPIER_ID 41
3+
SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME "Microphone Compress Audio Features"
4+
SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID 49
5+
SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME "Microphone Compress Audio Features Stream"
6+
SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID 133
7+
# MFCC compress output frame size in bytes:
8+
# Mel-only (80 bins): 24 + 80*4 = 344
9+
# Cepstral (13 ceps): 24 + 13*4 = 76
10+
MFCC_FRAME_BYTES 344
11+
# MFCC config blob: mel or ceps
12+
MFCC_BLOB mel
13+
}
14+
15+
Object.Pipeline.host-gateway-src-mfcc-capture [
16+
{
17+
index $SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID
18+
19+
Object.Widget.host-copier.1 {
20+
stream_name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME"
21+
pcm_id $SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID
22+
}
23+
24+
Object.Widget.mfcc.1 {
25+
type "encoder"
26+
Object.Control {
27+
bytes."1" {
28+
name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME MFCC bytes"
29+
IncludeByKey.MFCC_BLOB {
30+
"mel" "include/components/mfcc/mel80_compress_dtx.conf"
31+
"ceps" "include/components/mfcc/ceps13_compress_dtx.conf"
32+
}
33+
}
34+
mixer."1" {
35+
name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME MFCC VAD"
36+
}
37+
}
38+
}
39+
}
40+
]
41+
Object.Base.route [
42+
{
43+
source "module-copier.$SDW_DMIC_MODULE_COPIER_ID.0"
44+
sink "src.$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID.1"
45+
}
46+
{
47+
source "mfcc.$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID.1"
48+
sink "host-copier.$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID.capture"
49+
}
50+
]
51+
52+
Object.PCM.pcm [
53+
{
54+
name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME"
55+
id $SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID
56+
direction "capture"
57+
compress "true"
58+
59+
Object.Base.fe_dai.1 {
60+
name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME"
61+
}
62+
63+
Object.PCM.pcm_caps.1 {
64+
name "$SDW_DMIC_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME"
65+
formats 'S32_LE'
66+
rates '16000'
67+
channels_min 2
68+
channels_max 2
69+
}
70+
}
71+
]

tools/topology/topology2/platform/intel/sdw-dmic-audio-feature.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Define {
44
SDW_DMIC_AUDIO_FEATURE_CAPTURE_PCM_ID 48
55
SDW_DMIC_AUDIO_FEATURE_CAPTURE_STREAM_NAME "Microphone Audio Features Stream"
66
SDW_DMIC_AUDIO_FEATURE_CAPTURE_PIPELINE_ID 131
7+
# MFCC output frame size in bytes (24-byte header + coefficients):
8+
# Mel-only (80 bins): 24 + 80*4 = 344
9+
MFCC_FRAME_BYTES 344
710
}
811

912
Object.Pipeline.host-gateway-src-mfcc-capture [
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
Define {
2+
SDW_JACK_MODULE_COPIER_ID 11
3+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME "Jack In Compress Audio Features"
4+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID 48
5+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME "Jack In Compress Audio Features Stream"
6+
SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID 132
7+
# MFCC compress output frame size in bytes:
8+
# Mel-only (80 bins): 24 + 80*4 = 344
9+
# Cepstral (13 ceps): 24 + 13*4 = 76
10+
MFCC_FRAME_BYTES 344
11+
# MFCC config blob: mel or ceps
12+
MFCC_BLOB mel
13+
}
14+
15+
Object.Pipeline.host-gateway-src-mfcc-capture [
16+
{
17+
index $SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID
18+
19+
Object.Widget.host-copier.1 {
20+
stream_name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME"
21+
pcm_id $SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID
22+
}
23+
24+
Object.Widget.mfcc.1 {
25+
type "encoder"
26+
Object.Control {
27+
bytes."1" {
28+
name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME MFCC bytes"
29+
IncludeByKey.MFCC_BLOB {
30+
"mel" "include/components/mfcc/mel80_compress_dtx.conf"
31+
"ceps" "include/components/mfcc/ceps13_compress_dtx.conf"
32+
}
33+
}
34+
mixer."1" {
35+
name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME MFCC VAD"
36+
}
37+
}
38+
}
39+
}
40+
]
41+
Object.Base.route [
42+
{
43+
source "module-copier.$SDW_JACK_MODULE_COPIER_ID.0"
44+
sink "src.$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID.1"
45+
}
46+
{
47+
source "mfcc.$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PIPELINE_ID.1"
48+
sink "host-copier.$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID.capture"
49+
}
50+
]
51+
52+
Object.PCM.pcm [
53+
{
54+
name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME"
55+
id $SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_ID
56+
direction "capture"
57+
compress "true"
58+
59+
Object.Base.fe_dai.1 {
60+
name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_PCM_NAME"
61+
}
62+
63+
Object.PCM.pcm_caps.1 {
64+
name "$SDW_JACK_COMPR_AUDIO_FEATURE_CAPTURE_STREAM_NAME"
65+
formats 'S32_LE'
66+
rates '16000'
67+
channels_min $SDW_JACK_CAPTURE_CH
68+
channels_max $SDW_JACK_CAPTURE_CH
69+
}
70+
}
71+
]

tools/topology/topology2/platform/intel/sdw-jack-audio-feature.conf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ Define {
44
SDW_JACK_AUDIO_FEATURE_CAPTURE_PCM_ID 47
55
SDW_JACK_AUDIO_FEATURE_CAPTURE_STREAM_NAME "Jack In Audio Features Stream"
66
SDW_JACK_AUDIO_FEATURE_CAPTURE_PIPELINE_ID 130
7+
# MFCC output frame size in bytes (24-byte header + coefficients):
8+
# Mel-only (80 bins): 24 + 80*4 = 344
9+
MFCC_FRAME_BYTES 344
710
}
811

912
Object.Pipeline.host-gateway-src-mfcc-capture [

0 commit comments

Comments
 (0)