3 Copyright (C) 2011, BMW AG
6 author Christian Müller (christian.ei.mueller@bmw.de)
8 ***********************************************************************************************************
10 ***********************************************************************************************************
12 GNU Lesser General Public License, version 2.1, with special exception (GENIVI clause)
13 Copyright (C) 2011, BMW AG – Christian Müller Christian.ei.mueller@bmw.de
15 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.
16 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.
17 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>.
18 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.
19 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.
20 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.
21 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.
25 ***********************************************************************************************************
27 *********************************************************************************************************
29 You will need some packages in order to comile the GENIVI AudioManager Proof of Concept, these are:
39 -gstreamer-plugins-base-0.10
41 -gstreamer0.10-pulseaudio
42 -gstreamer0.10-plugins-good
44 -phonon-backend-gstreamer
47 More details in the CMake Files CmakeList.txt in the projects
49 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:
53 will create all neccessary folders and compile all plugins and applications except the PulseAudio Plugin.
55 after the script finished, you should have:
57 a /bin folder which contains:
63 a /build folder which has all build objects (erase that if you need a clean build)
65 a /doc folder which contains subfolders with the doxygen documentation:
73 ***********************************************************************************************************
75 ***********************************************************************************************************
77 For the pulseaudio plugin, you will need to do the following steps:
79 - if you have pulseaudio installed (e.g. you have vanilla ubuntu), remove it with the package manager
81 apt-get purge pulseaudio
83 - remove all packages of modules as well (there can be only one server of course)
84 - download the source code from pulseaudio
86 wget http://freedesktop.org/software/pulseaudio/releases/pulseaudio-0.9.22.tar.gz
88 - patch was developed and tested with verisopn 0.9.22 but newer versions could do as well and unpack it
90 tar xvf pulseaudio-0.9.22.tar.gz
92 - cd into the unpacked pulseaudio directory:
96 - copy the patchfile into the pulseaudio directory
98 cp ../genivipulseaudio.patch .
100 -apply the patchfile genivipulseaudio.patch with
102 patch -p1 -i genivipulseaudio.patch
104 - what follows is the normal compiling process of pulseaudio, first bootstrap:
112 - check the output, the summary file should look similar to this:
115 Enable OSS Output: yes
116 Enable OSS Wrapper: yes
128 Enable HAL->udev compat: yes
130 Enable TCP Wrappers: no
131 Enable libsamplerate: yes
133 Enable OpenSSL (for Airtunes): no
136 Enable simple database: yes
137 Enable Genivi support yes
140 Access Group: pulse-access
141 Enable per-user EsounD socket: yes
143 Preopened modules: all
145 at least we should have alsa, Jack, udev, libsamplerate, Genivi, Glib 2.0 .... if not install missing packages and start again
151 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
152 that are presented to the audiomanager by the routingadaptor in the pulseaudio genivi module.
155 ***********************************************************************************************************
157 ***********************************************************************************************************
159 First we need to start Jack. This can be done via very easy via
163 if you cannot install it via packagemanager, you can dowload it here: http://qjackctl.sourceforge.net/
165 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
166 qjackctl, you can select the settings tab and take as driver "dummy", or you start jackd with the following command:
168 /usr/bin/jackd -T -P62 -t1000 -m -ddummy -r44100 -p256
170 or write this command in your home into the .jackdrc file
172 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)
176 Now it's time to start pulseaudio, since we need to start it with a special configuration, get into the pulseaudio directory and run
178 src/pulseaudio -n -F src/test.pa -p $(pwd)/src/.libs/ -vvvv
180 The next step is to start the DLT server
184 And a dlt client if you want to see something.
185 Then get into the /bin directory of the workspace where the binaries where created and run in the following order:
189 This starts the audiomanager, you should already get some output on the DLT
193 starts the Test GUI, you can now connect and disconnect already, changing volumes works via double click on the sinks
195 ./PLayerGui player youraudiofile.mp3
197 starts the player application, please choose cool music.
198 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
199 is taken to play the traffic announcement.
203 Same for navigation, the file needs to have the name "music/navi.mp3"
205 ./PLayerGui navigation
208 ***********************************************************************************************************
210 ***********************************************************************************************************
211 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.
212 Git is setup in a way that the settings are ignored when committing.
213 To use make out of eclipse them, replace the default make command "make" with something like
214 "make -j4 -C ../build/AudioManagerDeamon VERBOSE=1" (exchanging the name of the Project in respect to the plugin whatever.
216 ***********************************************************************************************************
220 __.--'`._/_\j_____/_||___\ `----.
221 _.--'_____ | \ _____ /
222 _j /,---.\ | =o | /,---.\ |_
223 [__]==// .-. \\==`===========/==// .-. \\=[__]
224 `-._|\ `-' /|___\_________/___|\ `-' /|_.'