====== AudioRouting: Use cases and Requirement ====== How to modify tables see here [[https://www.dokuwiki.org/wiki:syntax#tables]] ===== Contributor ===== Toshiaki Isogai\\ Manuel Bachmann\\ Tsuyoshi Sakamoto\\ Naohiro Nishiguchi ===== Use cases ===== ^ No ^ Name ^ Description ^ Recommended solution (if you have) ^ Proposer ^ | 0(example) | | When Car Navigation output Audio as high priority, current audio, e.g. multimeida needs tofaded out and then audio from Car navigation fades in | N/A | Toshiaki Isogai | | | Active source change | When user choose different audio source with current one, IVI system stop or pause current source and activate new one. | TBD | Toshiaki Isogai | | | Active source change | When user connect external device e.g. iPhone, USB memory IVI system change active source automatically to connected one. | TBD | Toshiaki Isogai | | | Active source management | When user disconnect external device which is currently audible, IVI system automatically disable it and change to next source. | TBD | Toshiaki Isogai | | | Active source locking | When user is in phone call, IVI restrict to change active source. | TBD | Toshiaki Isogai | | | Active sink change | When user connect external device e.g. Headphone current audio source will be automatically routed. | TBD | Toshiaki Isogai | | | Interrupt source mixing | When car close to cross road IVI system reduce the volume of current source and mix with interrupt source e.g. Navigation Guidance. | TBD | Toshiaki Isogai | | | Interrupt source mixing | When user start speech recognition, IVI system automatically reduce/mute the volume of current active source. | TBD | Toshiaki Isogai | | | Last source management | When user turn on engine, IVI system start playing the last remaining source. | TBD | Toshiaki Isogai | | | Start-up sound | During start-up sound, IVI system mute the last remaining source. | TBD | Toshiaki Isogai | | | Start-up sound | After start-up sound is completed, IVI system recover the volume of the last remaining source. | TBD | Toshiaki Isogai | | | Ending sound | When user stop the IVI system, it play ending sound. | TBD | Toshiaki Isogai | | | Ending sound | During ending sound is playing, the IVI system wait shutting down. | TBD | Toshiaki Isogai | | | Volume change | User can change the volume of active source or sink. | TBD | Toshiaki Isogai | | | Volume change | When user change volume during interruption e.g. Navigation Guidance, IVI system change its volume temporary or permanently. | TBD | Toshiaki Isogai | | | Mute/unmute | User can mute/unmute current active source. | TBD | Toshiaki Isogai | | | Volume normalization | IVI system normalize the volume between different sources. | TBD | Toshiaki Isogai | | | Volume management | When user change active source, IVI system mute/unmute to avoid distortion of sound. | TBD | Toshiaki Isogai | | | Volume acceleration | When road noise is increased by speed, IVI system automatically change the volume of active source. | TBD | Toshiaki Isogai | | | Fader/Balance control | User can configure the focus of volume in the location of car. | TBD | Toshiaki Isogai | | | Equalizer setting | User can change equalizer setting | TBD | Toshiaki Isogai | | | Sound Effect | Provide a capability of sound effect when changing sound stream, e.g. fade-in, fade-out and cross-fade | TBD | Tsuyoshi Sakamoto | | | Routing sound | System needs to route sound stream to proper zones. (driver zone, passenger zone, rear seat zone) | TBD | Tsuyoshi Sakamoto | | | Last Volume management | When user turn on engine, IVI system start playing the last remaining source with last Volume. | TBD | Naohiro Nishiguchi | | | Volume management | When vehicle detect moving objects and external ECU output sounds(e.g. Alert), IVI system mute(or reduce) volume of active source of IVI system | TBD | Naohiro Nishiguchi | ===== Requirement ===== ==== Premise ==== Ther are several Hardware architectures as presented by MAZDA in ALS 2017. {{:typicalaudiosystemarchiteture.png?dire - ct|}} * Compact spec * There are several communication protcol between SoC and others. * Sound devices are connected to SoC directly. * All audio streaming are visible and appliication can control audio streaming and volume directly. * SoC is master of volume * Luxury spec * There are several communication protcol between SoC and others. * Some sound devices are NOT connected to SoC. * Some audio streaming are INVISIBLE and application can NOT control audio streaming and volume. e.g. Meter, Camera to AMP * External ECU is master of volume ==== Requirement list ==== ^ No ^ name ^ Description ^ AAAA ^ [[soundmanager|SoundManager based on GAM]] ^ | 0(example) | Nobuhiko Tanibata | A rule which is that fade-in/out of interrupt audio and current audio shall be defined with any toolkit. | N/A | N/A | | 1 | Naohiro Nishiguchi | Shall be able to apply business logic implicitly. (*1) | | Coverd | | 2 | Naohiro Nishiguchi | Shall have a persistency for sound source. | | Coverd | | 3 | Naohiro Nishiguchi | Shall have a persistency for sound volume. | | Coverd | | 4 | Naohiro Nishiguchi | Shall know all sound sources and sinks in IVI system. | | Coverd | | 5 | Naohiro Nishiguchi | Shall manage sound route regardless of source and sink location. | | Coverd | | 6 | Naohiro Nishiguchi | Shall manage volume regardless of the master of volume location. | | Coverd | | 7 | Naohiro Nishiguchi | Shall be able to be used by application developper easily. | | Coverd. ApplicationGuide is [[soundmanager|here]] | | 8 | Naohiro Nishiguchi | Shall be designed to support various kinds of communication protocols. e.g. MOST,CAN,,, | | Coverd | | 9 | | | | | *1: There are major 4 patterns of arbitration(policy) in automotive - The latter source win \\ Discards the former source and output the latter source. - The latter source win and the former source pause \\ Pauses the former source and output the latter. - The latter loose \\ Continues former source and discards the latter source. - The latter source is put on hold \\ Continues former source and puts latter source on hold ===== Known solutions ===== ^ Name ^ GENIVI Audio Manager ^ | Description| //A framework for managing audio in an In-Vehicle Infotainment (IVI) context.//| | Homepage| [[http://projects.genivi.org/audio-manager/]]| | Repository| [[http://git.projects.genivi.org/?p=AudioManager.git;a=summary|AudioManager Git]] - [[http://git.projects.genivi.org/?p=AudioManagerPlugins.git;a=summary|AudioManagerPlugins Git]]| | Maintainer| [[http://genivi.org/|GENIVI]]| | Ecosystem| [[http://genivi.org/|GENIVI]]| | License | MPL-2.0| | Dependencies (not in AGL) | CommonAPI, Dlt logging, Persistence, Node-state-manager... (7)| ^ Name ^ Tizen PulseAudio Module (Murphy IVI) ^ | Description| //A native PulseAudio module using the [[https://01.org/murphy|Murphy]] policy manager along with the [[https://www.lua.org/|LUA]] scripting language to prioritize audio streams.//| | Homepage| [[https://github.com/otcshare/pulseaudio-module-murphy-ivi]]| | Repository| [[https://github.com/otcshare/pulseaudio-module-murphy-ivi|GitHub]]| | Maintainer| Intel (j...s@intel.com)| | Ecosystem| [[https://www.tizen.org/|Tizen]]| | License | LGPLv2| | Dependencies (not in AGL) | [[https://github.com/01org/murphy|Murphy]] (1)| | Analysis | Murphy and LUA represent an unnecessary burden for an initial demo implementation; work-in-progress involves removing them for a simpler static logic. | ^ Name ^ Tizen PulseAudio Module (VConf) ^ | Description| //A native PulseAudio module using a static logic along with the VConf Tizen library to prioritize audio streams.//| | Homepage| | | Repository| [[git://git.tizen.org/platform/core/multimeia/pulseaudio-modules-tizen|Tizen Git]]| | Maintainer| Samsung (...@samsung.com)| | Ecosystem| [[https://www.tizen.org/|Tizen]]| | License | LGPLv2.1| | Dependencies (not in AGL) | VConf (1)| | Analysis | VConf represents an unnecessary burden for an initial demo implementation; the global logic does not seem feature-complete enough for above requirements, though. | ===== Work-in-progress status ===== Manuel Bachmann is working on **Tizen PulseAudio Module (Murphy IVI)** to remove dependencies on Murphy and LUA, and provide a demo implementation fitting above requirements (2016/04/04). Work can be followed here : [[https://github.com/Tarnyko/pulseaudio-module-murphy-ivi]] //(done so far : ported Tizen IVI PulseAudio 5.0 patches to AGL PulseAudio 6.0)// //(planned for Week 23, June 9th 2016 : initial code sharing and demo)// PulseAudio plugin initial draft : [[https://github.com/Tarnyko/agl-audio-plugin]] meta-agl recipes : [[https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=shortlog;h=refs/heads/sandbox/mbc/agl-audio-plugin]] PulseAudio plugin routing diagram : [[http://www.tarnyko.net/repo/agl-audio-plugin_Routing.png|(PNG image)]] PulseAudio plugin - AudioManager socket communication proposal : [[http://www.tarnyko.net/repo/agl-audio-plugin_Routing_proposal.odp|(ODP slides)]] - [[http://www.tarnyko.net/repo/agl-audio-plugin_Routing_proposal.pdf|(PDF slides)]] ===== Documents and proposals ===== The following presentation was issued before the [[https://wiki.automotivelinux.org/agl-distro/may2016-f2f| May F2F Meeting]], sums up the state of audio routing in GENIVI/Tizen, and contains a proposal for an AGL audio routing model : [[http://iot.bzh/download/public/2016/publications/Audio_Management_pre-F2F.pdf| Pre-F2F Audio Routing proposal]]. The following diagram was issued during the [[https://wiki.automotivelinux.org/agl-distro/may2016-f2f| May F2F Meeting]], and corrects/completes this proposal : [[http://iot.bzh/download/public/2016/publications/Audio_Management-F2F.pdf| Last F2F Audio Routing proposal]]