summaryrefslogtreecommitdiff
path: root/README.md
blob: 94fb6588a2d8184a8d2d7218f7a23dfa7add933d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# AM Monitor (GENIVI Audio Manager Monitor)

> Authors: JoonCheol Park <jooncheol.park@windriver.com>, Daewon Park <daewon.park@windriver.com>

---
## Introduction

> The AM Monitor shows to working flow of the AM. In this demo, we use the AM with 2 Plugins for PulseAudio and Audio Policy Control. When we play the audio in this app, we can see the internal status of connections in AM and status of the PulseAudio.

---
## Dependencies

* Audio Manager (branch Intreprid_stable_branch, Version 6.1)
 + 2 patches for PulseAudio Routing Plugin and Audio Policy Control Plugin
    (http://git.projects.genivi.org/?p=meta-genivi-demo.git;a=tree;f=recipes-multimedia/audiomanager/audiomanager;h=f134ecaf6190ec272bd6136ee88f0e86a8b86047;hb=HEAD)
* PulseAudio
* DBus
* Qt5

---
## Build Instruction for Ubuntu 14.04 PC


### Build Audio Manager + 2 patches

    $ git clone git://git.projects.genivi.org/AudioManager.git
    $ curl "http://git.projects.genivi.org/?p=meta-genivi-demo.git;a=blob_plain;f=recipes-multimedia/audiomanager/audiomanager/0001-Porting-Pulse-Routing-Interface-from-AM-v1.x-to-AM-v.patch;h=7d6ebbf710d0a0d46d99797f5ef6dd3712a888fe;hb=HEAD" > 0001-Porting-Pulse-Routing-Interface-from-AM-v1.x-to-AM-v.patch
    $ curl "http://git.projects.genivi.org/?p=meta-genivi-demo.git;a=blob_plain;f=recipes-multimedia/audiomanager/audiomanager/0001-Porting-Pulse-Control-Interface-from-AM-v1.x-to-AM-v.patch;hb=HEAD" > 0001-Porting-Pulse-Control-Interface-from-AM-v1.x-to-AM-v.patch
    $ cd AudioManager
    $ git checkout Intreprid_stable_branch
    $ patch -p1 < ../0001-Porting-Pulse-Routing-Interface-from-AM-v1.x-to-AM-v.patch
    $ patch -p1 < ../0001-Porting-Pulse-Control-Interface-from-AM-v1.x-to-AM-v.patch
    $ mkdir build
    $ cd build
    $ cmake -DWITH_PULSE_ROUTING_PLUGIN=ON -DWITH_PULSE_CONTROL_PLUGIN=ON -DWITH_ENABLED_IPC=DBUS -DWITH_DATABASE_STORAGE=OFF -DWITH_DLT=OFF -DCMAKE_INSTALL_PREFIX=(PREFIX on your dev environment) ..
    $ make
    $ make install


### Build AM Monitor

    $ git clone git://git.projects.genivi.org/AudioManagerDemo.git
    $ qmake
       or
    $ qmake INCLUDEPATH=(PREFIX-OF-AM)/include
    $ make

---
## Running AM Monitor on Ubuntu 14.04 PC

1. Set testing environment

    $ . pc-env

  This script creates 2 virtual sink device for PulseAudio Daemon. You can check with "pacmd list-sinks". If you want to remove created sink device, execute 'deactivate' on the shell

2. Execute AM

    $ AudioManager -V -c(PREFIX-OF-AM)/lib/audioManager/control/libPluginControlInterface.so -l(PREFIX-OF-AM)/lib/audioManager/command/ -r(PREFIX-OF-AM)/lib/audioManager/routing/

3. Execute AM Monitor

    $ ./AudioManagerMonitor --debug

 If you don't use any argument, AM Monitor will be running as fullscreen mode. Please refer the usage with "--help" option.

---
## Audio Policy Rule Configuration example

* Preset of AM Sources and Sinks
  (PREFIX-OF-AM)/lib/audiomanager/routing/libPluginRoutingInterfacePULSE.conf
  It defines 5 preset of AM Sources - Entertainment, Navigation, TTS ...
* Policy Rule
  (PREFIX-OF-AM)/lib/audiomanager/control/libPluginControlInterface.conf
  It defines audio policy scenario. E.g - When play the NAVI sound alert during Media playing, Sink Volume of previous Media goes down to 50%.

---
## To do items

* AM Monitor
 * Use CommonAPI for command interface in AM Monitor App

* AM Plugins
 * Enhance the Routing Plugin for PulseAudio
   * Implement missing code for all Routing Plugin APIs
   * Enhance the configuration syntax
 * Enhance the Conrol Plugin for Audio Policy
   * More flexible and programmable audio policy configuration using JavaScript