summaryrefslogtreecommitdiffstats
path: root/conf.d/alsa/asoundrc.sample
diff options
context:
space:
mode:
Diffstat (limited to 'conf.d/alsa/asoundrc.sample')
-rw-r--r--conf.d/alsa/asoundrc.sample142
1 files changed, 106 insertions, 36 deletions
diff --git a/conf.d/alsa/asoundrc.sample b/conf.d/alsa/asoundrc.sample
index bd5b3b7..2611478 100644
--- a/conf.d/alsa/asoundrc.sample
+++ b/conf.d/alsa/asoundrc.sample
@@ -1,9 +1,30 @@
-# Dmixer mixe multiple audio channel into one
-pcm.SoftMixer {
+#
+# Author: Fulup Ar Foll
+# Object: PCM hook type
+#
+# Test : Note: Jabra_USB=hw:v1340
+# Check SoundCard speaker-test -Dhw:v1340 -c2 -twav
+# Check MixerPCM speaker-test -DMyMixerPCM -c2 -twav
+# Check HookPCM speaker-test -DMyNavigationHook -c2 -twav
+# Check NavPCM speaker-test -DMyNavPCM -c2 -twav
+# MultiMedia aplay -DDMyNavPCM /usr/share/sounds/alsa/test.wav
+#
+# Bug/Feature: when softvol control is initialised from plugin and not
+# from AGL binding. At 1st run ctl has invalid TLV and cannot be
+# use. Bypass Solution:
+# * start audio-binder before playing sound (binding create control before softvol plugin)
+# * run a dummy aplay -DMyNavPCM "" to get a clean control
+#
+# References: https://www.spinics.net/lists/alsa-devel/msg54235.html
+# --------------------------------------------------------------------
+
+# Mixer PCM allow to play multiple stream simultaneously
+# ------------------------------------------------------
+pcm.MyMixerPCM {
type dmix
ipc_key 1024
ipc_key_add_uid false
- ipc_perm 0666 # mixing for all users
+ ipc_perm 0666 # mixing for all users
# Define target effective sound card (cannot be a plugin)
slave {
@@ -21,52 +42,101 @@ pcm.SoftMixer {
}
}
-pcm.music {
- type softvol
- slave.pcm "SoftMixer"
- control {
- name "MasterMusic"
- card 0
+# Define a Hook_type with a private sharelib
+# -------------------------------------------
+pcm_hook_type.MyHookPlugin {
+ install "AlsaInstallHook"
+ lib "/home/fulup/Workspace/AGL-AppFW/audio-bindings-dev/build/Alsa-Plugin/Alsa-Hook-Callback/alsa_hook_cb.so"
+}
+
+# Define a HookedPCM that point to Hook_type sharelib
+# ----------------------------------------------------
+pcm.MyNavigationHook {
+ type hooks
+ slave.pcm "MyMixerPCM"
+
+ # Defined used hook sharelib and provide arguments/config to install func
+ hooks.0 {
+ type "MyHookPlugin"
+ hook_args {
+
+ # Every Call should return OK in order PCM to open
+ uri "ws://localhost:1234/api?token='audio-agent-token'"
+ request {
+ CallPing {
+ api "alsacore"
+ verb "ping"
+ }
+ CallUCM {
+ api "alsacore"
+ verb "ping"
+ query "{'devid':'hw:v1340','verb':'Navigation','dev':'speakers'}"
+ }
+ }
+ }
}
+}
+
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyMultimediaPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
# Make this plugin visible from aplay -L
hint {
show on
- description "Music"
+ description "Navigation SolftVol PCM"
}
}
-pcm.navi {
- type softvol
- slave {
- pcm "SoftMixer"
- }
- control {
- name "MasterNavi"
- card 0
- }
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyNavPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
+
+ # Make this plugin visible from aplay -L
hint {
show on
- description "Navi"
- }
+ description "Navigation SolftVol PCM"
+ }
}
-pcm.notif {
- type softvol
- slave {
- pcm "SoftMixer"
- }
- control {
- name "MasterNotif"
- card 0
- }
+# If hardware does not support mixer emulate it with softvol
+# -----------------------------------------------------------
+pcm.MyAlarmPCM {
+ type softvol
+
+ # Point Slave on HOOK for policies control
+ slave.pcm "MyNavigationHook"
+
+ # resolution=HAL(valMax+1) (default=256)
+ resolution 256
+
+ # name should match with HAL but do not set card=xx
+ control.name "Playback Navigation"
+
+ # Make this plugin visible from aplay -L
hint {
show on
- description "Notif"
- }
+ description "Navigation SolftVol PCM"
+ }
}
-pcm.!default {
- type plug
- slave.pcm "SoftMixer" #make use of Softvol
-}