Skip to content

Commit ab460de

Browse files
author
Eddy Hsu
committed
Add topology1 for CTC.
Add topology1 for CTC component. Signed-off-by: Eddy Hsu <eddyhsu@google.com>
1 parent f35420b commit ab460de

File tree

4 files changed

+155
-1
lines changed

4 files changed

+155
-1
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
divert(-1)
2+
3+
dnl Define macro for CTC Processing effect widget
4+
DECLARE_SOF_RT_UUID("google-ctc-audio-processing", google_ctc_audio_processing_uuid,
5+
0xbf0e1bbc, 0xdc6a, 0x45fe, 0xbc, 0x90, 0x25, 0x54, 0xcb, 0x13, 0x7a, 0xb4)
6+
7+
dnl N_GOOGLE_CTC_AUDIO_PROCESSING(name)
8+
define(`N_GOOGLE_CTC_AUDIO_PROCESSING', `GOOGLE_CTC_AUDIO_PROCESSING'PIPELINE_ID`.'$1)
9+
10+
dnl W_GOOGLE_CTC_AUDIO_PROCESSING(name, format, periods_sink, periods_source, core, kcontrols_list)
11+
define(`W_GOOGLE_CTC_AUDIO_PROCESSING',
12+
`SectionVendorTuples."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_uuid" {'
13+
` tokens "sof_comp_tokens"'
14+
` tuples."uuid" {'
15+
` SOF_TKN_COMP_UUID' STR(google_ctc_audio_processing_uuid)
16+
` }'
17+
`}'
18+
`SectionData."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_uuid" {'
19+
` tuples "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_uuid"'
20+
`}'
21+
`SectionVendorTuples."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_w" {'
22+
` tokens "sof_comp_tokens"'
23+
` tuples."word" {'
24+
` SOF_TKN_COMP_PERIOD_SINK_COUNT' STR($3)
25+
` SOF_TKN_COMP_PERIOD_SOURCE_COUNT' STR($4)
26+
` SOF_TKN_COMP_CORE_ID' STR($5)
27+
` }'
28+
`}'
29+
`SectionData."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_w" {'
30+
` tuples "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_w"'
31+
`}'
32+
`SectionVendorTuples."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_str" {'
33+
` tokens "sof_comp_tokens"'
34+
` tuples."string" {'
35+
` SOF_TKN_COMP_FORMAT' STR($2)
36+
` }'
37+
`}'
38+
`SectionData."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_str" {'
39+
` tuples "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_str"'
40+
`}'
41+
`SectionVendorTuples."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_str_type" {'
42+
` tokens "sof_process_tokens"'
43+
` tuples."string" {'
44+
` SOF_TKN_PROCESS_TYPE' "GCTCP"
45+
` }'
46+
`}'
47+
`SectionData."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_str_type" {'
48+
` tuples "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_tuples_str_type"'
49+
`}'
50+
`SectionWidget."'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`" {'
51+
` index "'PIPELINE_ID`"'
52+
` type "effect"'
53+
` no_pm "true"'
54+
` data ['
55+
` "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_uuid"'
56+
` "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_w"'
57+
` "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_str"'
58+
` "'N_GOOGLE_CTC_AUDIO_PROCESSING($1)`_data_str_type"'
59+
` ]'
60+
` bytes ['
61+
$6
62+
` ]'
63+
`}')
64+
65+
divert(0)dnl
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
CONTROLBYTES_PRIV(DEF_CTC_PRIV,
2+
` bytes "0x53,0x4f,0x46,0x34,0x00,0x00,0x00,0x00,'
3+
` 0x18,0x10,0x00,0x00,0x00,0xD0,0x01,0x03,'
4+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'
5+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'
6+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'
7+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'
8+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,'
9+
` 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00"'
10+
)

tools/topology/topology1/sof-mt8196-mt6681.m4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dnl time_domain, sched_comp)
3737
define(`ENDPOINT_NAME', `Speakers')
3838
# Low Latency playback pipeline 1 on PCM 16 using max 2 channels of s16le
3939
# Set 1000us deadline with priority 0 on core 0
40-
PIPELINE_PCM_ADD(ifdef(`WAVES', sof/pipe-waves-codec-playback.m4, sof/pipe-passthrough-playback.m4),
40+
PIPELINE_PCM_ADD(ifdef(`WAVES', sof/pipe-waves-codec-playback.m4, sof/pipe-ctc-playback.m4),
4141
1, 0, 2, s16le,
4242
1000, 0, 0,
4343
48000, 48000, 48000)
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# CTC Pipeline and PCM
2+
#
3+
# Pipeline Endpoints for connection are :-
4+
#
5+
# host PCM_P --> B0 --> CTC --> B1 --> sink DAI0
6+
7+
# Include topology builder
8+
include(`utils.m4')
9+
include(`buffer.m4')
10+
include(`pcm.m4')
11+
include(`dai.m4')
12+
include(`pipeline.m4')
13+
include(`bytecontrol.m4')
14+
include(`google_ctc_audio_processing.m4')
15+
16+
#
17+
# Controls
18+
#
19+
20+
# Host "Playback with codec adapter" PCM
21+
# with 2 sink and 0 source periods
22+
W_PCM_PLAYBACK(PCM_ID, CTC Processing Playback, 2, 0, SCHEDULE_CORE)
23+
24+
define(DEF_CTC_PRIV, concat(`ctc_priv_', PIPELINE_ID))
25+
define(DEF_CTC_BYTES, concat(`ctc_bytes_', PIPELINE_ID))
26+
include(`google_ctc_audio_processing_coef_default.m4')
27+
28+
# CTC Bytes control
29+
C_CONTROLBYTES(DEF_CTC_BYTES, PIPELINE_ID,
30+
CONTROLBYTES_OPS(bytes,
31+
258 binds the mixer control to bytes get/put handlers,
32+
258, 258),
33+
CONTROLBYTES_EXTOPS(258 binds the mixer control to bytes get/put handlers,
34+
258, 258),
35+
, , ,
36+
CONTROLBYTES_MAX(void, 4124),
37+
,
38+
DEF_CTC_PRIV)
39+
40+
#
41+
# Components and Buffers
42+
#
43+
44+
W_GOOGLE_CTC_AUDIO_PROCESSING(0, PIPELINE_FORMAT, 2, 2, SCHEDULE_CORE,
45+
LIST(` ', "DEF_CTC_BYTES"))
46+
47+
# Playback Buffers
48+
W_BUFFER(0, COMP_BUFFER_SIZE(2,
49+
COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, COMP_PERIOD_FRAMES(PCM_MAX_RATE, SCHEDULE_PERIOD)),
50+
PLATFORM_HOST_MEM_CAP)
51+
W_BUFFER(1, COMP_BUFFER_SIZE(DAI_PERIODS,
52+
COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, COMP_PERIOD_FRAMES(PCM_MAX_RATE, SCHEDULE_PERIOD)),
53+
PLATFORM_DAI_MEM_CAP)
54+
55+
#
56+
# Pipeline Graph
57+
#
58+
# host PCM_P --> B0 --> CTC -> B1 --> sink DAI0
59+
60+
P_GRAPH(pipe-ctc-playback, PIPELINE_ID,
61+
LIST(` ',
62+
`dapm(N_BUFFER(0), N_PCMP(PCM_ID))',
63+
`dapm(N_GOOGLE_CTC_AUDIO_PROCESSING(0), N_BUFFER(0))',
64+
`dapm(N_BUFFER(1), N_GOOGLE_CTC_AUDIO_PROCESSING(0))'))
65+
66+
#
67+
# Pipeline Source and Sinks
68+
#
69+
indir(`define', concat(`PIPELINE_SOURCE_', PIPELINE_ID), N_BUFFER(1))
70+
indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), CTC Processing Playback PCM_ID)
71+
72+
#
73+
# PCM Configuration
74+
#
75+
76+
PCM_CAPABILITIES(CTC Processing Playback PCM_ID, CAPABILITY_FORMAT_NAME(PIPELINE_FORMAT), PCM_MIN_RATE, PCM_MAX_RATE, 2, PIPELINE_CHANNELS, 2, 16, 192, 16384, 65536, 65536)
77+
78+
undefine(`DEF_CTC_PRIV')
79+
undefine(`DEF_CTC_BYTES')

0 commit comments

Comments
 (0)