summaryrefslogtreecommitdiffstats
path: root/cmds/bootanimation/AudioPlayer.h
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@google.com>2014-10-02 16:08:47 -0700
committerMike Lockwood <lockwood@google.com>2014-10-03 15:38:15 -0700
commitebf9a0d8a888042c16ec0cb6dd8419f18038663f (patch)
treee364c8e39ff0795a22da5a5d1e32472bc22dcebb /cmds/bootanimation/AudioPlayer.h
parent76716c5a180aa471c6973ca7aa03c7f2da677823 (diff)
downloadframeworks_base-ebf9a0d8a888042c16ec0cb6dd8419f18038663f.zip
frameworks_base-ebf9a0d8a888042c16ec0cb6dd8419f18038663f.tar.gz
frameworks_base-ebf9a0d8a888042c16ec0cb6dd8419f18038663f.tar.bz2
Add support for playing audio during bootanimation
The bootanimation daemon will play 16 bit WAV files contained in bootanimation.zip For this to work, the bootanimation.zip must contain an audio_conf.txt file, which contains parameters to be used for the tinyalsa pcm_open call as well as mixer parameters to set before attempting to play the sound. If the bootanimation finds an audio_conf.txt file, then it will look for a file named "audio.wav" in each of the part subdirectories. If audio.wav is found, it will play that WAV file starting at the beginning of that part. The code for this is based on the tinyplay utility in tinyalsa. The audio_conf.txt and must begin with the following header: card=<ALSA card number> device=<ALSA device number> period_size=<period size> period_count=<period count> This header is followed by zero or more mixer settings, each with the format: mixer "<name>" = <value list> Since mixer names can contain spaces, the name must be enclosed in double quotes. The values in the value list can be integers, booleans (represented by 0 or 1) or strings for enum values. Finally I should mention that this change is not the right approach. Instead of going straight to ALSA we should be using the mediaserver instead. But mediaserver isn't ready in time due to interactions with the system server, and there isn't time to fix this for the current release. We need to fix that for the next one. Bug: 17674304 Change-Id: Ic391ade61c941d0a24f4d64fe005ac9375a23fa9
Diffstat (limited to 'cmds/bootanimation/AudioPlayer.h')
-rw-r--r--cmds/bootanimation/AudioPlayer.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/cmds/bootanimation/AudioPlayer.h b/cmds/bootanimation/AudioPlayer.h
new file mode 100644
index 0000000..7e82a07
--- /dev/null
+++ b/cmds/bootanimation/AudioPlayer.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _BOOTANIMATION_AUDIOPLAYER_H
+#define _BOOTANIMATION_AUDIOPLAYER_H
+
+#include <utils/Thread.h>
+
+namespace android {
+
+class AudioPlayer : public Thread
+{
+public:
+ AudioPlayer();
+ virtual ~AudioPlayer();
+ bool init(const char* config);
+
+ void playFile(struct FileMap* fileMap);
+
+private:
+ virtual bool threadLoop();
+
+private:
+ int mCard; // ALSA card to use
+ int mDevice; // ALSA device to use
+ int mPeriodSize;
+ int mPeriodCount;
+
+ struct FileMap* mCurrentFile;
+};
+
+} // namespace android
+
+#endif // _BOOTANIMATION_AUDIOPLAYER_H