372 lines
8.4 KiB
Plaintext
372 lines
8.4 KiB
Plaintext
|
#
|
||
|
# Split multichannel PCM stream to channel groups
|
||
|
#
|
||
|
|
||
|
#
|
||
|
# Macro SplitPCM
|
||
|
#
|
||
|
# Application variable:
|
||
|
# @SplitPCM - defined, return channel description using UCM values
|
||
|
#
|
||
|
# Arguments:
|
||
|
# Name - PCM name (alsa-lib)
|
||
|
# Direction - "Playback" or "Capture"
|
||
|
# [Format] - sample format like S16_LE or S32_LE
|
||
|
# Channels - application channels
|
||
|
# HWChannels - hardware channels
|
||
|
# HWChannelPos0 - channel position (MONO FR FL etc. - see alsa-lib's strings)
|
||
|
# [HWChannelPos1] - channel position (MONO FR FL etc. - see alsa-lib's strings)
|
||
|
#
|
||
|
|
||
|
DefineMacro.SplitPCM.If.0 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:@SplitPCM}"
|
||
|
}
|
||
|
True {
|
||
|
If.period_time {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-SplitPCMPeriodTime}"
|
||
|
}
|
||
|
True.Define.__period_time 20000
|
||
|
False.Define.__period_time "${var:SplitPCMPeriodTime}"
|
||
|
}
|
||
|
If.buffer_time {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-SplitPCMBufferTime}"
|
||
|
}
|
||
|
True.Define.__buffer_time 500000
|
||
|
False.Define.__buffer_time "${var:SplitPCMBufferTime}"
|
||
|
}
|
||
|
If.format {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__Format}"
|
||
|
}
|
||
|
True.Define.__Format S16_LE
|
||
|
}
|
||
|
|
||
|
LibraryConfig.pcm.SubstiConfig.pcm."${var:__Name}" {
|
||
|
@args [ CARD DEV CHN0 ]
|
||
|
@args {
|
||
|
CARD.type string
|
||
|
DEV.type integer
|
||
|
CHN0.type integer
|
||
|
}
|
||
|
ipc_key 6678293
|
||
|
type dshare
|
||
|
slave {
|
||
|
pcm {
|
||
|
type hw
|
||
|
card $CARD
|
||
|
device $DEV
|
||
|
chmap [ "${var:__HWChannelPos0}" ]
|
||
|
}
|
||
|
format "${var:__Format}"
|
||
|
channels "${evali:$__HWChannels}"
|
||
|
period_time "${evali:$__period_time}"
|
||
|
buffer_time "${evali:$__buffer_time}"
|
||
|
}
|
||
|
bindings.0 $CHN0
|
||
|
}
|
||
|
|
||
|
If.pos1 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:__HWChannelPos1}"
|
||
|
}
|
||
|
False.LibraryConfig.pos1.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:__HWChannelPos1}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos2 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos2}"
|
||
|
}
|
||
|
False.LibraryConfig.pos2.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos2}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos3 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos3}"
|
||
|
}
|
||
|
False.LibraryConfig.pos3.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos3}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos4 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos4}"
|
||
|
}
|
||
|
False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos4}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos5 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos5}"
|
||
|
}
|
||
|
False.LibraryConfig.pos4.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos5}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos6 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos6}"
|
||
|
}
|
||
|
False.LibraryConfig.pos6.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos6}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos7 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos7}"
|
||
|
}
|
||
|
False.LibraryConfig.pos7.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos7}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos8 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos8}"
|
||
|
}
|
||
|
False.LibraryConfig.pos8.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos8}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos9 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos9}"
|
||
|
}
|
||
|
False.LibraryConfig.pos9.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos9}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos10 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos10}"
|
||
|
}
|
||
|
False.LibraryConfig.pos10.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos10}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos11 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos11}"
|
||
|
}
|
||
|
False.LibraryConfig.pos11.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos11}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos12 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos12}"
|
||
|
}
|
||
|
False.LibraryConfig.pos12.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos12}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos13 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos13}"
|
||
|
}
|
||
|
False.LibraryConfig.pos13.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos13}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos14 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos14}"
|
||
|
}
|
||
|
False.LibraryConfig.pos14.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos14}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos15 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos15}"
|
||
|
}
|
||
|
False.LibraryConfig.pos15.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos15}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos16 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos16}"
|
||
|
}
|
||
|
False.LibraryConfig.pos16.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos16}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos17 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos17}"
|
||
|
}
|
||
|
False.LibraryConfig.pos17.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos17}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos18 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos18}"
|
||
|
}
|
||
|
False.LibraryConfig.pos18.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos18}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos19 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos19}"
|
||
|
}
|
||
|
False.LibraryConfig.pos19.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos19}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos20 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos20}"
|
||
|
}
|
||
|
False.LibraryConfig.pos20.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos20}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos21 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos21}"
|
||
|
}
|
||
|
False.LibraryConfig.pos21.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos21}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos22 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos22}"
|
||
|
}
|
||
|
False.LibraryConfig.pos22.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos22}" ]
|
||
|
}
|
||
|
}
|
||
|
If.pos23 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__HWChannelPos23}"
|
||
|
}
|
||
|
False.LibraryConfig.pos23.SubstiConfig.pcm."${var:__Name}" {
|
||
|
slave.pcm.chmap [ "${var:-__HWChannelPos23}" ]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
If.ch1 {
|
||
|
Condition {
|
||
|
Type RegexMatch
|
||
|
Regex "^([2-9]|[1-9][0-9])$"
|
||
|
String "${var:__Channels}"
|
||
|
}
|
||
|
True.LibraryConfig.ch1.SubstiConfig.pcm."${var:__Name}" {
|
||
|
@args.3 CHN1
|
||
|
@args { CHN1.type integer }
|
||
|
bindings.1 $CHN1
|
||
|
}
|
||
|
}
|
||
|
|
||
|
If.dir {
|
||
|
Condition {
|
||
|
Type String
|
||
|
String1 "${var:__Direction}"
|
||
|
String2 "Capture"
|
||
|
}
|
||
|
True.LibraryConfig.dir.Config.pcm."${var:__Name}".type dsnoop
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Macro SplitPCMDevice
|
||
|
#
|
||
|
# Application variable:
|
||
|
# @SplitPCM - defined, return channel description using UCM values
|
||
|
#
|
||
|
# Arguments:
|
||
|
# Name - PCM name (alsa-lib)
|
||
|
# Direction - "Playback" or "Capture"
|
||
|
# Device - hardware PCM device number (optional - default 0)
|
||
|
# Channels - count of application channels
|
||
|
# HWChannels - total channels (in hardware)
|
||
|
# Channel0 - channel index in stream for the destination channel 0
|
||
|
# [Channel1] - channel index in stream for the destination channel 1 (optional)
|
||
|
# ChannelPos0 - channel position (MONO FR FL etc. - see alsa-lib's strings
|
||
|
# [ChannelPos1] - channel position (MONO FR FL etc. - see alsa-lib's strings)
|
||
|
#
|
||
|
|
||
|
DefineMacro.SplitPCMDevice {
|
||
|
If.0 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__Device}"
|
||
|
}
|
||
|
True.Define.__Device "0"
|
||
|
}
|
||
|
If.1 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:@SplitPCM}"
|
||
|
}
|
||
|
False {
|
||
|
Value {
|
||
|
"${var:__Direction}Channels" "${var:__HWChannels}"
|
||
|
"${var:__Direction}PCM" "hw:${CardId},${var:__Device}"
|
||
|
"${var:__Direction}Channel0" "${var:__Channel0}"
|
||
|
"${var:__Direction}ChannelPos0" "${var:__ChannelPos0}"
|
||
|
}
|
||
|
If.ch1 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__Channel1}"
|
||
|
}
|
||
|
False.Value {
|
||
|
"${var:__Direction}Channel1" "${var:__Channel1}"
|
||
|
"${var:__Direction}ChannelPos1" "${var:__ChannelPos1}"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
True {
|
||
|
Define.__pcmdev "${var:__Name}:${CardId},${var:__Device},${var:__Channel0}"
|
||
|
If.ch1 {
|
||
|
Condition {
|
||
|
Type String
|
||
|
Empty "${var:-__Channel1}"
|
||
|
}
|
||
|
False.Define.__pcmdev "${var:__pcmdev},${var:__Channel1}"
|
||
|
}
|
||
|
Value {
|
||
|
"${var:__Direction}Channels" "${var:__Channels}"
|
||
|
"${var:__Direction}PCM" "${var:__pcmdev}"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|