mirror of https://github.com/thesofproject/sof.git
Add topology for CTC.
Add topology in development to test CTC. Signed-off-by: Eddy Hsu <eddyhsu@google.com>
This commit is contained in:
parent
dea518e024
commit
0e5ba1fb70
|
@ -0,0 +1,100 @@
|
|||
#
|
||||
# Pipeline definitions
|
||||
#
|
||||
# PCM0 ---> gain ----> Mixin ----> Mixout ----> gain ----> CTC ----> SSP0
|
||||
# PCM1 ---> gain ----> Mixin ----> Mixout ----> gain ----> CTC ----> SSP1
|
||||
#
|
||||
# The gain before mixin is for the different routes(e.g., deepbuffer, headset).
|
||||
|
||||
# Pipeline ID:1 PCM ID: 0
|
||||
Object.Pipeline {
|
||||
# playback pipelines
|
||||
host-copier-gain-mixin-playback [
|
||||
{
|
||||
index $HEADSET_HOST_PIPELINE_ID
|
||||
|
||||
Object.Widget.host-copier.1 {
|
||||
stream_name '$HEADSET_PLAYBACK_PCM_STREAM_NAME'
|
||||
pcm_id $HEADSET_PCM_ID
|
||||
}
|
||||
Object.Widget.gain.1 {
|
||||
Object.Control.mixer.1 {
|
||||
name 'Pre Mixer $HEADSET_PCM_NAME Playback Volume'
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
index $SPEAKER_HOST_PIPELINE_ID
|
||||
|
||||
Object.Widget.host-copier.1 {
|
||||
stream_name '$SPEAKER_PLAYBACK_PCM_STREAM_NAME'
|
||||
pcm_id $SPEAKER_PCM_ID
|
||||
}
|
||||
Object.Widget.gain.1 {
|
||||
Object.Control.mixer.1 {
|
||||
name 'Pre Mixer $SPEAKER_PCM_NAME Playback Volume'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
mixout-gain-ctc-dai-copier-playback [
|
||||
{
|
||||
index $HEADSET_DAI_PIPELINE_ID
|
||||
|
||||
Object.Widget.dai-copier.1 {
|
||||
dai_index $HEADSET_SSP_DAI_INDEX
|
||||
dai_type "SSP"
|
||||
copier_type "SSP"
|
||||
stream_name "$HEADSET_CODEC_NAME"
|
||||
node_type $I2S_LINK_OUTPUT_CLASS
|
||||
}
|
||||
|
||||
Object.Widget.gain.1 {
|
||||
Object.Control.mixer.1 {
|
||||
name 'Post Mixer $HEADSET_PCM_NAME Playback Volume'
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
index $SPEAKER_DAI_PIPELINE_ID
|
||||
|
||||
Object.Widget.dai-copier.1 {
|
||||
dai_index $SPEAKER_SSP_DAI_INDEX
|
||||
dai_type "SSP"
|
||||
copier_type "SSP"
|
||||
stream_name "$SPEAKER_CODEC_NAME"
|
||||
node_type $I2S_LINK_OUTPUT_CLASS
|
||||
}
|
||||
Object.Widget.gain.1 {
|
||||
Object.Control.mixer.1 {
|
||||
name 'Post Mixer $SPEAKER_PCM_NAME Playback Volume'
|
||||
}
|
||||
}
|
||||
Object.Widget.ctc.1 {
|
||||
Object.Control.bytes."1" {
|
||||
name 'CTC.0'
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Object.Base.route [
|
||||
{
|
||||
source "gain.$HEADSET_DAI_PIPELINE_ID.1"
|
||||
sink "dai-copier.SSP.$HEADSET_CODEC_NAME.playback"
|
||||
}
|
||||
{
|
||||
source "mixin.$HEADSET_HOST_PIPELINE_ID.1"
|
||||
sink "mixout.$HEADSET_DAI_PIPELINE_ID.1"
|
||||
}
|
||||
{
|
||||
source "ctc.$SPEAKER_DAI_PIPELINE_ID.1"
|
||||
sink "dai-copier.SSP.$SPEAKER_CODEC_NAME.playback"
|
||||
}
|
||||
{
|
||||
source "mixin.$SPEAKER_HOST_PIPELINE_ID.1"
|
||||
sink "mixout.$SPEAKER_DAI_PIPELINE_ID.1"
|
||||
}
|
||||
]
|
|
@ -19,6 +19,7 @@
|
|||
<host-copier-gain-mixin-playback.conf>
|
||||
<mixout-gain-dai-copier-playback.conf>
|
||||
<mixout-gain-eqiir-dts-dai-copier-playback.conf>
|
||||
<mixout-gain-ctc-dai-copier-playback.conf>
|
||||
<deepbuffer-playback.conf>
|
||||
<dai-copier-be.conf>
|
||||
<dai-copier-eqiir-gain-module-copier-capture.conf>
|
||||
|
@ -48,6 +49,7 @@
|
|||
<output_pin_binding.conf>
|
||||
<input_audio_format.conf>
|
||||
<output_audio_format.conf>
|
||||
<ctc.conf>
|
||||
|
||||
Define {
|
||||
MCLK 24576000
|
||||
|
@ -160,6 +162,7 @@ IncludeByKey.INCLUDE_BT_OFFLOAD {
|
|||
IncludeByKey.PLAYBACK_PIPELINE_SRC {
|
||||
"volume" "cavs-mixin-mixout-ssp.conf"
|
||||
"dts" "cavs-mixin-mixout-eqiir-dts-ssp.conf"
|
||||
"ctc" "cavs-mixin-mixout-ctc-ssp.conf"
|
||||
}
|
||||
|
||||
|
||||
|
@ -320,6 +323,11 @@ Object.PCM.pcm [
|
|||
Object.PCM.pcm_caps.1 {
|
||||
name "$SPEAKER_PLAYBACK_PCM_STREAM_NAME"
|
||||
formats 'S16_LE,S24_LE,S32_LE'
|
||||
periods_max 16
|
||||
period_size_min 192
|
||||
period_size_max 16384
|
||||
buffer_size_min 65536
|
||||
buffer_size_max 65536
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -245,4 +245,19 @@ SPK_ID=6,SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAM
|
|||
BT_NAME=SSP1-BT,BT_INDEX=1,BT_ID=7,BT_PCM_NAME=Bluetooth,INCLUDE_ECHO_REF=true,\
|
||||
GOOGLE_RTC_AEC_SUPPORT=1,DEEP_BUF_SPK=true,PLAYBACK_PIPELINE_SRC=volume,\
|
||||
SSP_SPK_FMT_24=true,SSP_HS_FMT_24=true"
|
||||
|
||||
# mtl-rt1019 with CTC
|
||||
"cavs-rt5682\;sof-mtl-rt1019-rt5682-ctc\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,\
|
||||
PDM1_MIC_B_ENABLE=1,DMIC0_PCM_ID=99,SPK_ID=6,PREPROCESS_PLUGINS=nhlt,\
|
||||
NHLT_BIN=nhlt-sof-max98357a-rt5682.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_INDEX=2,\
|
||||
SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAME=SSP0-Codec,\
|
||||
INCLUDE_ECHO_REF=true,INCLUDE_BT_OFFLOAD=false,PLAYBACK_PIPELINE_SRC=ctc"
|
||||
|
||||
# mtl-rt5650 with CTC
|
||||
"cavs-rt5682\;sof-mtl-rt5650-ctc\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,\
|
||||
PDM1_MIC_B_ENABLE=1,DMIC0_PCM_ID=99,PREPROCESS_PLUGINS=nhlt,\
|
||||
NHLT_BIN=nhlt-sof-mtl-rt5650-dts.bin,DEEPBUFFER_FW_DMA_MS=10,HEADSET_SSP_DAI_INDEX=2,\
|
||||
SPK_ID=6,SPEAKER_SSP_DAI_INDEX=0,HEADSET_CODEC_NAME=SSP2-Codec,SPEAKER_CODEC_NAME=SSP0-Codec,\
|
||||
BT_NAME=SSP1-BT,BT_INDEX=1,BT_ID=7,BT_PCM_NAME=Bluetooth,INCLUDE_ECHO_REF=true,\
|
||||
DEEP_BUF_SPK=true,PLAYBACK_PIPELINE_SRC=ctc,SSP_SPK_FMT_24=true,SSP_HS_FMT_24=true"
|
||||
)
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
#
|
||||
# Common widget ctc
|
||||
#
|
||||
# A generic ctc widget. All attributes defined herein are namespaced
|
||||
# by alsatplg to "Object.Widget.ctc.N.attribute_name"
|
||||
#
|
||||
# Usage: this component can be used by instantiating it in the parent object. i.e.
|
||||
#
|
||||
# Object.Widget.ctc."N" {
|
||||
# index 1
|
||||
# type "effect"
|
||||
# }
|
||||
#
|
||||
# Where N is the unique instance number for the parent object.
|
||||
|
||||
Class.Widget."ctc" {
|
||||
#
|
||||
# Pipeline ID for the CTC widget object
|
||||
#
|
||||
DefineAttribute."index" {
|
||||
type "integer"
|
||||
}
|
||||
|
||||
#
|
||||
# Unique instance for CTC widget
|
||||
#
|
||||
DefineAttribute."instance" {
|
||||
type "integer"
|
||||
}
|
||||
|
||||
#include common component definition
|
||||
<include/components/widget-common.conf>
|
||||
|
||||
# Attribute categories
|
||||
attributes {
|
||||
#
|
||||
# The CTC widget name would be constructed using the index and instance attributes.
|
||||
#
|
||||
!constructor [
|
||||
"index"
|
||||
"instance"
|
||||
]
|
||||
|
||||
#
|
||||
# mandatory attributes that must be provided when the class is instantiated
|
||||
#
|
||||
!mandatory [
|
||||
"uuid"
|
||||
"num_input_audio_formats"
|
||||
"num_output_audio_formats"
|
||||
]
|
||||
|
||||
#
|
||||
# immutable attributes cannot be modified in the object instance
|
||||
#
|
||||
!immutable [
|
||||
"uuid"
|
||||
"type"
|
||||
]
|
||||
|
||||
#
|
||||
# deprecated attributes should not be added in the object instance
|
||||
#
|
||||
!deprecated [
|
||||
"preload_count"
|
||||
]
|
||||
|
||||
#
|
||||
# DTS widget objects instantiated within the same alsaconf node must have unique
|
||||
# instance attribute
|
||||
#
|
||||
unique "instance"
|
||||
}
|
||||
|
||||
Object.Control.bytes."1" {
|
||||
max 4124
|
||||
}
|
||||
|
||||
# Default attribute values for CTC widget
|
||||
uuid "bc:1b:0e:bf:6a:dc:fe:45:bc:90:25:54:cb:13:7a:b4"
|
||||
type "effect"
|
||||
no_pm "true"
|
||||
num_input_pins 1
|
||||
num_output_pins 1
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
#
|
||||
# BE playback pipeline: mixout-gain-ctc-dai-copier.
|
||||
# This pipeline is an extension of the mixout-gain-dai-copier-playback pipeline class.
|
||||
#
|
||||
# All attributes defined herein are namespaced
|
||||
# by alsatplg to "Object.Pipeline.mixout-gain-ctc-dai-copier-playback.N.attribute_name"
|
||||
#
|
||||
# Usage: mixout-gain-ctc-dai-copier-playback pipeline object can be instantiated as:
|
||||
#
|
||||
# Object.Pipeline.mixout-gain-ctc-dai-copier-playback."N" {
|
||||
# period 1000
|
||||
# time_domain "timer"
|
||||
# }
|
||||
#
|
||||
# Where N is the unique pipeline ID within the same alsaconf node.
|
||||
#
|
||||
|
||||
<include/common/input_audio_format.conf>
|
||||
<include/common/output_audio_format.conf>
|
||||
<include/components/dai-copier.conf>
|
||||
<include/components/gain.conf>
|
||||
<include/components/mixout.conf>
|
||||
<include/components/pipeline.conf>
|
||||
<include/components/ctc.conf>
|
||||
<platform/intel/efx-default.conf>
|
||||
<include/pipelines/cavs/mixout-gain-dai-copier-playback.conf>
|
||||
|
||||
Class.Pipeline."mixout-gain-ctc-dai-copier-playback" {
|
||||
SubTreeCopy.baseclass {
|
||||
# this class extends the mixout-gain-dai-copier-playback class definition
|
||||
source "Class.Pipeline.mixout-gain-dai-copier-playback"
|
||||
|
||||
# target node is not defined which means that the new subtree will be copied to
|
||||
# the parent node containing the SubTreeCopy node i.e in this case the
|
||||
# Class.Pipeline.mixout-gain-ctc-dai-copier-playback {} node.
|
||||
|
||||
# default copy type is to extend the base class ie the widgets and routes
|
||||
# will be added to the existing list of widgets/routes in the base class
|
||||
|
||||
tree {
|
||||
Object.Widget {
|
||||
ctc."1" {
|
||||
num_input_audio_formats 1
|
||||
num_output_audio_formats 1
|
||||
|
||||
Object.Base.input_audio_format [
|
||||
{
|
||||
in_bit_depth 32
|
||||
in_valid_bit_depth 32
|
||||
}
|
||||
]
|
||||
Object.Base.output_audio_format [
|
||||
{
|
||||
out_bit_depth 32
|
||||
out_valid_bit_depth 32
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Object.Base {
|
||||
! route [
|
||||
{
|
||||
source gain.$index.1
|
||||
sink ctc.$index.1
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue