summaryrefslogtreecommitdiff
path: root/README
blob: 7b0271e98ea6a0edee93f86a63c9f5c6620e93e9 (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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
GENIVI AUDIOMANAGER

Copyright (C) 2011, BMW AG

Datum  20.05.2011
author Christian Müller (christian.ei.mueller@bmw.de)

***********************************************************************************************************
LICENSE
***********************************************************************************************************

GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
Copyright (C) 2011, BMW AG – Christian Müller  Christian.ei.mueller@bmw.de

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License, version 2.1, for more details.
You should have received a copy of the GNU Lesser General Public License, version 2.1, along with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.
Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may also be applicable to programs even in cases in which the program is not a library in the technical sense.
Linking AudioManager statically or dynamically with other modules is making a combined work based on AudioManager. You may license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to license your linked modules under the GNU Lesser General Public License, version 2.1, you may use the program under the following exception.
As a special exception, the copyright holders of AudioManager give you permission to combine AudioManager with software programs or libraries that are released under any license unless such a combination is not permitted by the license of such a software program or library. You may copy and distribute such a system following the terms of the GNU Lesser General Public License, version 2.1, including this special exception, for AudioManager and the licenses of the other code concerned.
Note that people who make modified versions of AudioManager are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, version 2.1, gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.

Version 0.2

***********************************************************************************************************
COMPILE PROGRAMS
*********************************************************************************************************

You will need some packages in order to comile the GENIVI AudioManager Proof of Concept, these are:
-QT4
-automotive-dlt
-jack
-jackeq
-jack control
-dbus
-sqlite
-glib >=2.0
-gstreamer-base-0.10
-gstreamer-plugins-base-0.10
-gstreamer-plugins
-gstreamer0.10-pulseaudio
-gstreamer0.10-plugins-good
-phonon
-phonon-backend-gstreamer
-doxygen

More details in the CMake Files CmakeList.txt in the projects

on the top level of the folder you just received, there is a shall script "cmaker.sh" which can be invoked with a lot of different parameters. Invoking it with:

sh cmaker.sh all all

will create all neccessary folders and compile all plugins and applications except the PulseAudio Plugin.

after the script finished, you should have:

a /bin folder which contains: 
	AudioGui  
	AudioManager  
	Bild1.png  
	PlayerGui

a /build folder which has all build objects (erase that if you need a clean build)

a /doc folder which contains subfolders with the doxygen documentation:
	AudioGui  
	AudioManager  
	DBusPlugin  
	JackPlugin  
	PlayerGUI  
	PluginTest

***********************************************************************************************************
COMPILE PULSEAUDIO
***********************************************************************************************************

For the pulseaudio plugin, you will need to do the following steps:

- if you have pulseaudio installed (e.g. you have vanilla ubuntu), remove it with the package manager 

	apt-get purge pulseaudio

- remove all packages of modules as well (there can be only one server of course)
- download the source code from pulseaudio

	wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-0.9.22.tar.gz

- patch was developed and tested with verisopn 0.9.22 but newer versions could do as well and unpack it

	tar xvf pulseaudio-0.9.22.tar.gz

- cd into the unpacked pulseaudio directory:

	cd pulseaudio-0.9.22

- copy the patchfile into the pulseaudio directory

	cp ../genivipulseaudio.patch .

-apply the patchfile genivipulseaudio.patch with 

	patch -p1 -i genivipulseaudio.patch 

- what follows is the normal compiling process of pulseaudio, first bootstrap:

	./bootstrap.sh

- then configure
	
	./configure.sh

- check the output, the summary file should look similar to this:

    Have X11:                      no
    Enable OSS Output:             yes
    Enable OSS Wrapper:            yes
    Enable Alsa:                   yes
    Enable Solaris:                no
    Enable GLib 2.0:               yes
    Enable Gtk+ 2.0:               yes
    Enable GConf:                  no
    Enable Avahi:                  yes
    Enable Jack:                   yes
    Enable Async DNS:              no
    Enable LIRC:                   no
    Enable HAL:                    no
    Enable udev:                   yes
    Enable HAL->udev compat:       yes
    Enable BlueZ:                  no
    Enable TCP Wrappers:           no
    Enable libsamplerate:          yes
    Enable IPv6:                   yes
    Enable OpenSSL (for Airtunes): no
    Enable tdb:                    no
    Enable gdbm:                   no
    Enable simple database:        yes
    Enable Genivi support 	   yes
    System User:                   pulse
    System Group:                  pulse
    Access Group:                  pulse-access
    Enable per-user EsounD socket: yes
    Force preopen:                 no
    Preopened modules:             all

    at least we should have alsa, Jack, udev, libsamplerate, Genivi, Glib 2.0 .... if not install missing packages and start again

- ok, lets go with

	make -j4 all

To adjust to your system, you can modify the file "Genivi.conf" witch can be found in pulseaudio-0.9.22/src. Here you can define the sources and sinks
that are presented to the audiomanager by the routingadaptor in the pulseaudio genivi module.


***********************************************************************************************************
START 
***********************************************************************************************************

First we need to start Jack. This can be done via very easy via 

	qjackctl

if you cannot install it via packagemanager, you can dowload it here: http://qjackctl.sourceforge.net/

Since we deinstalled pulse, jack will grab the hardwarecontrols if it is started, that is contra productive, so we make sure that the server runs virtual. Within
qjackctl, you can select the settings tab and take as driver "dummy", or you start jackd with the following command:

	/usr/bin/jackd -T -P62 -t1000 -m -ddummy -r44100 -p256

or write this command in your home into the .jackdrc file

If you want to have the same as the demo in Dublin, start now the jack equalizer (if you don't have: http://jackeq.sourceforge.net/ or packagemanager)

	/usr/bin/jackeq

Now it's time to start pulseaudio, since we need to start it with a special configuration, get into the pulseaudio directory and run

	src/pulseaudio -n -F src/test.pa -p $(pwd)/src/.libs/ -vvvv

The next step is to start the DLT server

	dlt-daemon

And a dlt client if you want to see something.
Then get into the /bin directory of the workspace where the binaries where created and run in the following order:

	./AudioManager

This starts the audiomanager, you should already get some output on the DLT

	./AudioGui

starts the Test GUI, you can now connect and disconnect already, changing volumes works via double click on the sinks

	./PLayerGui player youraudiofile.mp3 

starts the player application, please choose cool music.
To test Traffic announcements, you need to create a folder on the workspace, same level as bin, called "music" and put an mp3 in there. please rename it to "ta.mp3", this file
is taken to play the traffic announcement.

	./PlayerGui ta

Same for navigation, the file needs to have the name "music/navi.mp3"

	./PLayerGui navigation 


***********************************************************************************************************
Tips 
***********************************************************************************************************
If you want to use the codebase with eclipse, define the main level of the git as workspace and import the projects as c++ makefile projects.
Git is setup in a way that the settings are ignored when committing.
To use make out of eclipse them, replace the default make command "make" with something like
"make -j4 -C ../build/AudioManagerDeamon VERBOSE=1" (exchanging the name of the Project in respect to the plugin whatever. 

***********************************************************************************************************	

                                 _..-------++._
                             _.-'/ |      _||  \"--._
                       __.--'`._/_\j_____/_||___\    `----.
                  _.--'_____    |          \     _____    /
                _j    /,---.\   |        =o |   /,---.\   |_
               [__]==// .-. \\==`===========/==// .-. \\=[__]
                 `-._|\ `-' /|___\_________/___|\ `-' /|_.'     
                       `---'                     `---'