summaryrefslogtreecommitdiffstats
path: root/conf.d/project/alsa.d/asoundrc.sample
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-08-18 01:09:56 +0200
committerFulup Ar Foll <fulup@iot.bzh>2017-08-18 01:09:56 +0200
commita7d41a6fa1e29d800ce8ac9e95e8f943814463e8 (patch)
tree30ca09383f1ce30df559601328e1714f67afc8fc /conf.d/project/alsa.d/asoundrc.sample
parent5e919fde0a4c66b0203c46b8f06f303fcceaedde (diff)
Integration with Alsa HookPlugin is now working.
Diffstat (limited to 'conf.d/project/alsa.d/asoundrc.sample')
-rw-r--r--conf.d/project/alsa.d/asoundrc.sample146
1 files changed, 146 insertions, 0 deletions
diff --git a/conf.d/project/alsa.d/asoundrc.sample b/conf.d/project/alsa.d/asoundrc.sample
new file mode 100644
index 0000000..b208a09
--- /dev/null
+++ b/conf.d/project/alsa.d/asoundrc.sample
@@ -0,0 +1,146 @@
+#
+# 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
+
+ # Define target effective sound card (cannot be a plugin)
+ slave {
+ pcm "hw:v1340" #Jabra Solmate
+ period_time 0
+ period_size 1024
+ buffer_size 8192
+ rate 44100
+ }
+
+ # DMIX can only map two channels
+ bindings {
+ 0 0
+ 1 1
+ }
+}
+
+# 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-Policy-Hook/policy_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 {
+ verbose true # print few log messages (default false);
+
+ # Every Call should return OK in order PCM to open (default timeout 100ms)
+ uri "ws://localhost:1234/api?token='audio-agent-token'"
+ request {
+ # Request autorisation to write on navigation
+ RequestNavigation {
+ api "control"
+ verb "dispatch"
+ query "{'target':'navigation', 'args':{'device':'Jabra SOLEMATE v1.34.0'}}"
+ }
+ }
+ # map event reception to self generated signal
+ event {
+ pause 30
+ resume 31
+ stop 3
+ }
+ }
+ }
+}
+
+# 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 "Navigation SolftVol PCM"
+ }
+}
+
+# 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 "Navigation SolftVol PCM"
+ }
+}
+
+# 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 "Navigation SolftVol PCM"
+ }
+}
+