2
0
mirror of synced 2025-02-24 07:18:15 +00:00

17 Commits

Author SHA1 Message Date
Burcu Dogan
e33b2cee97 mobile/audio: determine the format and sample rate from the WAV format
Change-Id: Ieca37d7785e0608160728716654ceb6650799f3e
Reviewed-on: https://go-review.googlesource.com/9874
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-05-08 15:51:42 +00:00
Burcu Dogan
d861c4af68 mobile/audio: rename (*Player).Destroy to (*Player).Close
Destroy sounds like C, we should use Close in Go.

Change-Id: I73da732300a955e458513f15ad898b7f34c8ed7c
Reviewed-on: https://go-review.googlesource.com/9875
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-05-08 04:27:49 +00:00
Burcu Dogan
2aa4da50c5 mobile/audio: skip RIFF WAVE header if exists
PCM data may contain a header, we need to skip it and stream the
audio data to the underlying OpenAL player. Otherwise, we will play
the header bytes as well and the sound will click.

The future work will include auto detecting the number of channels,
the bitrate and the sample rate from the header.

Fixes golang/go#10728

Change-Id: Ie09e4c59a08207838d0c8f4c5d4d0cb08deb27cd
Reviewed-on: https://go-review.googlesource.com/9860
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-05-07 21:31:08 +00:00
Burcu Dogan
a18cedb28d mobile/audio: player should close its audio source
The most common use case to init a player is to open an asset and provide
it to NewPlayer. Currently, we require use to keep a reference to the source
and close it after the player is destroyed. It's tedious. We may improve
the usability by freeing the source asset on Destroy. And if the user
wants to play a ReadSeeker, they can implement a trivial ReadSeekCloser
with a noop Close.

Change-Id: Ie6bdea468da484f785bc0c283f13203cad3a1a68
Reviewed-on: https://go-review.googlesource.com/9693
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-05-07 01:16:26 +00:00
Burcu Dogan
a8aa7bbd72 audio: have a global audio device and context
On mobile devices, there is typically only a single audio device. We may
open it once and reuse it to stream audio buffers from multiple sources.
This assumption also applies to the context since OpenAL contextes are
process-wide. A shared global pointer is reusable across multiple
OpenAL sources.

This CL also removes the Device and Context types and the unexpected
garbage collection issue introduced by Context's finalizer.

Fixes golang/go#10636

Change-Id: I82e6e6e6a1500ba91d66a7848cf37d1a5e01af9b
Reviewed-on: https://go-review.googlesource.com/9782
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-05-06 19:07:41 +00:00
Burcu Dogan
1718de6fe6 mobile: add missing canonical import paths
Change-Id: I71d38a6494b8235f5669ff53e6bd29e7045d0409
Reviewed-on: https://go-review.googlesource.com/9697
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-05-05 03:13:45 +00:00
Burcu Dogan
cd5954b705 audio: add notice about the OpenAL license
OpenAL Soft is licensed with LGPL which requires users to add a notice
about its license under their open source notices screen.

Change-Id: Ic3c3bcc4a38896508b19d54a8c526bcd1fa9d5b3
Reviewed-on: https://go-review.googlesource.com/8868
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-04-13 22:34:15 +00:00
Burcu Dogan
6544820032 audio/al: don't define MakeContextCurrent on the pointer
It's a common requirement to call MakeContextCurrent with a nil value
before destroying a context. Nil value as a reciever is not as user-
friendly as a standalone MakeContextCurrent.

Change-Id: I537ec0330657ef134f97a3c3b0d32793012eee86
Reviewed-on: https://go-review.googlesource.com/8500
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-04-06 22:23:13 +00:00
Burcu Dogan
33ee14d530 mobile/audio: add instructions how to install OpenAL on Linux desktop
Change-Id: I47b42db1443040bcd9c77cd1d19a0e0f8c5119ec
Reviewed-on: https://go-review.googlesource.com/7090
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-03-07 01:01:31 +00:00
Burcu Dogan
c94142eb97 mobile/audio: add android support
Due to licensing limitations, OpenAL should be dynamically
loaded. Android apps that needs to import the audio package
needs to be packed with libopenal.so as an extenal lib
dependency.

Instructions to build OpenAL for Android is available at
http://repo.or.cz/w/openal-soft.git/blob/HEAD:/XCompile-Android.txt

The packed libopenal.so is exported to
/data/data/<package_name>/lib/libopenal.so at installation.
The audio package dlopens libopenal.so from this location and
dlsym to dispatch the OpenAL functions.

Change-Id: I7aa36bb8dd0ae8e101ae4aa5366c3d426b2569a9
Reviewed-on: https://go-review.googlesource.com/6642
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-04 18:58:40 +00:00
Burcu Dogan
a49d80e2cf audio/al: make MakeCurrentContext a method of Context
There is no good reason for MakeCurrentContext to be a standalone
function since we don't allow nil contextes to be the current.

Change-Id: I4483c30a2ed78262b67c96e73739188a22f685b9
Reviewed-on: https://go-review.googlesource.com/6640
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-03 18:09:34 +00:00
Burcu Dogan
b7c27d1a66 mobile/audio: reorg the package to allow multiple implementations of bindings
Change-Id: I68dcc392b0ae7c539c12c6306d9b312d02603b5b
Reviewed-on: https://go-review.googlesource.com/6570
Reviewed-by: Nigel Tao <nigeltao@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
2015-03-03 17:53:35 +00:00
Nigel Tao
fc5f7c74c8 audio: use int constants (C style enums) instead of string.
Change-Id: Ifb6db04c4bbf6c66e5a63dcaeee704ab02e711b0
Reviewed-on: https://go-review.googlesource.com/6423
Reviewed-by: Andrew Gerrand <adg@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-03 00:02:05 +00:00
Nigel Tao
333098d850 audio: build on linux, not just darwin.
Change-Id: Ie10c29012bf6769591a1ad1c1e9ee322d780608e
Reviewed-on: https://go-review.googlesource.com/6392
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-03-02 00:52:08 +00:00
Burcu Dogan
7b45e52f8c mobile/audio: avoid locks during IO and fix seek precision
Change-Id: Ida8d07f87fe118094bc36c6be5c576fd0999abdf
Reviewed-on: https://go-review.googlesource.com/6080
Reviewed-by: Nigel Tao <nigeltao@golang.org>
2015-02-27 04:52:35 +00:00
Hyang-Ah Hana Kim
25b15a705f audio: skip build for non-darwin.
Change-Id: If382b517a21b90412ced3bfa543575055df8de3a
Reviewed-on: https://go-review.googlesource.com/5510
Reviewed-by: Burcu Dogan <jbd@google.com>
2015-02-20 23:43:34 +00:00
Burcu Dogan
7e40b31538 mobile/audio: add a basic audio player
Fixes #9551.

Change-Id: I83311afc2d2fd67a883c70d83c6a498d9e033f2c
Reviewed-on: https://go-review.googlesource.com/3262
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2015-02-12 17:24:23 +00:00