HandsOn May 10 2017 ALSA Routing Adapter Plugin
- Slides: 17
Hands-On May 10, 2017 | ALSA Routing Adapter Plugin Jens Lorenz Staff Engineer, ADIT Gmb. H, GENIVI Alliance
Why ALSA Routing Adapter?
Overview • Existing Infrastructure – Daemon – Plugins • Common. API • DBus • Generic Controller 3 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Motivation • Reduce learning curve – Playground to understand domain concept – Playground to understand static vs. dynamic IDs • Playground independent of audio server – AM works as a single daemon – ALSA plugins for processing only i. e. mixing • Works with Generic Controller • Usable for real products – Used in platforms with Hands-Free (ECNR) systems 4 | May 10, 2017 | Copyright © GENIVI Alliance 2017
What does it?
Design • Domain Database – Filled on contraction – Registered on startup • Streaming Control – Creates Proxies on demand – Proxies can be replaced • Volume Control – Works with Soft. Vol • ALSA Control – On Sound. Property Request 6 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Proxy in Audio 7 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Proxy Interface class IAm. Routing. Adapter. ALSAProxy { IAm. Routing. Adapter. ALSAProxy(const ra_Proxy_s & proxy); virtual ~IAm. Routing. Adapter. ALSAProxy(); virtual am_time. Sync_t get. Delay() const = 0; virtual am_Error_e open. Streaming() = 0; virtual am_Error_e start. Streaming() = 0; virtual am_Error_e stop. Streaming() = 0; virtual am_Error_e close. Streaming() = 0; } 8 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Example Needed?
Domain Configuration with Gateway <amra_alsa> <t. DOMAIN dom. Nam = "Applications" nod. Nam = "Cpu"> <t. SOURCE src. Nam = "Media. Player" src. Cls. Nam = "BASE“ /> <t. SINK sink. Nam = "Gateway. In" visible = "0“ /> </t. DOMAIN> <t. DOMAIN dom. Nam = "Virt. DSP" nod. Nam = "Cpu"> <t. SOURCE src. Nam = "Gateway. Out" src. Cls. Nam = "BASE" visible = "0“> <t. GATEWAY gateway. Nam = "Gateway" sink. Nam = "Gateway. In" sink. Dom. Nam = “Applications“ lst. Src. Frmt = "2" lst. Sink. Frmt = "2" convertion. Matrix = "1"> </t. GATEWAY> </t. SOURCE> <t. SINK sink. Nam = "AMP" sink. ID = "1“ /> </t. DOMAIN> </amra_alsa> 10 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Volume Configuration <t. DOMAIN dom. Nam = "Applications" nod. Nam = "Cpu"> <t. SOURCE src. Nam = "Media. Player" src. Cls. Nam = "BASE“ pcm. Nam = "vdev_app_mediaplayer" vol. Nam = "vol_mediaplayer" /> <t. SINK sink. Nam = "Gateway" visible = "0“ /> </t. DOMAIN> ALSA configuration: pcm. vdev_app_mediaplayer { type plug slave. pcm vdev_mpsv } pcm. vdev_mpsv { type softvol slave. pcm “hw: Loopback, 0" control. name vol_mediaplayer control. card 0 } 11 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Proxy Configuration <t. DOMAIN dom. Nam = "Virt. DSP" nod. Nam = "Cpu"> <t. SOURCE src. Nam = "Gateway" src. Cls. Nam = "BASE" visible = "0“ /> <t. SINK sink. Nam = "AMP" sink. ID = "1“ /> <t. PROXY src. Nam = "Gateway" sink. Nam = "AMP“ pcm. Src = "vdev_dsp_gateway“ pcm. Sink = "vdev_dsp_amp“ lst. Rates = "48000" ms. Buffersize = "8" CPUScheduling. Policy = "1" CPUScheduling. Priority = "80" /> </t. DOMAIN> ALSA configuration: 12 | May 10, 2017 | Copyright © GENIVI Alliance 2017 pcm. vdev_dsp_gateway { type hw slave. card “Loopback” slave. device 0 } pcm. vdev_dsp_amp { type dmix slave. pcm “hw: 0” slave. rate 48000 slave. channels 2 }
Sound Properties <t. DOMAIN dom. Nam = "Virt. DSP" nod. Nam = "Cpu"> <t. SOURCE src. Nam = "Gateway" src. Cls. Nam = "BASE" pcm. Nam = "vdev_app_mediaplayer" /> <t. PROPERTY type = "1"> <t. PROPSPEC value = "1“ nams. Vals = "vol_mediaplayer, 50; ADC High-Pass Filter, High Pass; “ /> <t. PROPSPEC value = "2“ nams. Vals = "vol_mediaplayer, 200; ADC High-Pass Filter, None; “ /> </t. PROPERTY> </t. SOURCE> </t. DOMAIN> 13 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Next?
Open Topics • Generic Controller works with fix topology • USB sound card detection support 15 | May 10, 2017 | Copyright © GENIVI Alliance 2017
Questions? genivi-audio-manager@lists. genivi. org jlorenz@de. adit-jv. com References https: //github. com/GENIVI/Audio. Manager. Plugins
Thank You! Visit GENIVI at http: //www. genivi. org or http: //projects. genivi. org Contact us: help@genivi. org This work is licensed under a Creative Commons Attribution-Share Alike 4. 0 (CC BY-SA 4. 0) GENIVI is a registered trademark of the GENIVI Alliance in the USA and other countries. Copyright © GENIVI Alliance 2017.
- Alsa route plugin
- What is ex link port on samsung tv
- Slt 800 solar light tower factories
- Pag aalsa
- Alsa medication
- Clock skew
- Level pool routing
- Static routing and dynamic routing
- Hydrologic routing and hydraulic routing
- James handson
- Handson activities
- This is the religion that god accepts
- Handson session
- A handson
- Analytical research
- Handson activities
- James handson
- Aldol condensation is given by