Hajime Hoshi
b1607de99d
audio: Refactoring
2019-04-28 23:58:06 +09:00
Hajime Hoshi
14b6e95217
audio: Use a boolean value to inidicate inited state intead of channels
...
This is a preparation to use oto.Players for Players. By using a
boolean value, suspending state can be detected from multiple
oto.Players.
2019-04-28 19:53:28 +09:00
Hajime Hoshi
fe55e55b7e
audio: Refactoring
2019-04-28 19:53:28 +09:00
Hajime Hoshi
1327e2239c
audio: Use a boolean value to indicate suspending state instead of channels
...
This is a preparation to use oto.Players for Players. By using a
boolean value, suspending state can be detected from multiple
oto.Players.
2019-04-28 19:53:28 +09:00
Hajime Hoshi
31758bf3ab
audio: Remove comment
2019-04-28 19:49:37 +09:00
Hajime Hoshi
2bea7d4e1a
audio: Error on duplicated source
...
Fixes #853
2019-04-28 19:39:46 +09:00
Hajime Hoshi
70a225fd7e
audio: Use dummy hooks from tests
2019-04-28 19:35:59 +09:00
Hajime Hoshi
81549a3523
audio: Bug fix: Remove redundant Unlock
2019-04-28 02:44:32 +09:00
Hajime Hoshi
9fc2ae158c
audio: Bug fix: Close always returned error
2019-04-28 02:22:11 +09:00
Hajime Hoshi
e4f0a0aa04
audio: Bug fix: Remove depenency on finalizer
...
This change fixes playerImpl leak by removing dependency on
finalizer usages. Now readLoop can (or should) be called multiple
times even after closing. Only when (*Player).Close is called
explicitly, the read loop cannot be started again.
Fixes #852
2019-04-28 02:03:55 +09:00
Hajime Hoshi
4f831de008
audio: Remove (*playerImpl).sync and use mutex instead
...
This is a preparation to work syncing wihtout the read-loop.
2019-04-28 01:37:52 +09:00
Hajime Hoshi
acc4ef4e11
audio: Add comments
2019-04-01 01:59:10 +09:00
Hajime Hoshi
ed855d6c6c
audio: Refactoring: remove the unused returning value
2019-03-02 04:42:19 +09:00
Hajime Hoshi
a3eddeb50f
Improve panic messages
2019-02-06 23:43:03 -10:00
Hajime Hoshi
a4123a479e
audio: Initialize the context first
...
This is necessary to create an audio's Player before the loop if
we want to create *oto.Player for each *audio.Player.
2019-01-30 00:45:36 +09:00
Hajime Hoshi
13b0d82b6d
audio: Use oto.NewContext
2019-01-30 00:36:47 +09:00
Hajime Hoshi
6d714a16cf
audio: Remove unneeded 'break'
2019-01-10 02:34:58 +09:00
Hajime Hoshi
a6b3f761f8
audio: Refactoring: Remove dependency on clock package
2019-01-10 00:59:38 +09:00
Hajime Hoshi
14404334e7
audio: Rename players to mux
2019-01-09 22:10:52 +09:00
Hajime Hoshi
1760070130
audio: Add comments about GC ( #746 )
2018-12-18 23:07:19 +09:00
Hajime Hoshi
b9eba54115
audio: Use a dummy driver for testing
...
Fixes #750
This also fixes an out-of-index bug when all players are skipped.
2018-12-17 23:06:59 +09:00
Hajime Hoshi
b0cb216f5f
audio: Close audio after its playing finishes
...
Fixes #746
This is a temporal fix and we will need further re-designing of
audio package.
2018-12-17 04:02:32 +09:00
Hajime Hoshi
08a369b8fd
audio: Bug fix: GC audio players correctly
...
Fixes #746
2018-12-15 22:33:45 +09:00
Hajime Hoshi
d14202ef7b
audio: Add Context.IsReady
...
Fixes #717
2018-10-16 00:02:19 +09:00
Hajime Hoshi
2969de5b1f
audio: Refactoring: Redefine bytesPerSample
2018-07-24 01:54:01 +09:00
Hajime Hoshi
d752408da3
Fix comments not to use the term 'this function'
2018-07-15 01:04:46 +09:00
Hajime Hoshi
273093b237
audio: Skip the player in the state of starting, seeking or EOF
...
This is basically reland of
2fee7a6fe5
.
Before this change, if a player's buffer was not enough for
reading, 0 value were used and this caused noises. The reading
size should be aligned with all the players.
However, there are some cases that the player should be skippped.
For example, just after a player just starts playing or seeking,
the buffer is empty. In this case, other players should not wait
for the player since decoding might take some time. Another case
is that the player reached EOF.
This change aligns the read buffer sizes but use zero values only
when the player just starts or seeks, or reaches EOF.
2018-06-09 22:00:11 +09:00
Hajime Hoshi
facf184548
Revert "audio: Consider the state of the player's starting and seeking"
...
This reverts commit 2fee7a6fe5
.
Reason: This causes freezing on browsers
2018-06-09 19:28:20 +09:00
Hajime Hoshi
b62e07b9bd
audio: Remove println
2018-06-09 19:05:07 +09:00
Hajime Hoshi
2fee7a6fe5
audio: Consider the state of the player's starting and seeking
...
Before this change, if a player's buffer was not enough for
reading, 0 value were used and this caused noises. The reading
size should be aligned with all the players.
Just after a player just starts playing or seeking, the buffer is
empty but other players should not wait for the player read since
decoding might take some time.
To summerize, this change aligns the read buffer sizes but use
zero values only when the player just starts or seeks.
2018-06-09 19:01:57 +09:00
Hajime Hoshi
91958d24ef
audio: Use bigger buffers for mobiles
2018-06-09 18:14:18 +09:00
Hajime Hoshi
faaf391619
audio: Give up syncing audio timer and game timer ( #617 )
...
Syncing was already incomplete (e.g. decoding takes more than one
frame and delays can happen in this case). Giving up syncing audio
timer and game timer should not affect the game experience so much.
Instead, clock implementation will be much simpler.
2018-05-27 00:30:12 +09:00
Hajime Hoshi
5976e4bbbc
audio: More intellegent suspending/resuming ( #617 )
...
Before this change, the audio is suspended when the game stops for
1/12[s]. However, as game often stops for more than 1/12[s]
especially on mobiles, this implemntation caused some audio
glitches.
This change fixes this problem by re-implementing suspending/
resumeing audio by detecting the window is active/focused or not.
2018-05-26 23:31:04 +09:00
Hajime Hoshi
df048d9bf6
audio: Don't use nosync GopherJS
...
nosync package is good in terms of performance, but this assumes
that duplicated lock never happens. As audio package runs multiple
goroutines, theoretically duplicated lock can happen, and it looks
like this is an actual case (#603 ).
This change replaces nosync usages with regular sync usages.
Probably I'll deprecate nosync usages via internal/sync package
everywhere in Ebiten.
This might fix #603 .
2018-05-09 12:14:20 +09:00
Hajime Hoshi
632a97974d
audio: Fix wrong English word
2018-03-22 00:36:48 +09:00
Hajime Hoshi
18113f259a
audio: NewPlayer now accepts io.ReadCloser
...
Fixes #414
2018-03-22 00:33:17 +09:00
Hajime Hoshi
1b0e71765f
internal/hooks: Rename Update -> BeforeUpdate
2018-03-15 02:50:10 +09:00
Hajime Hoshi
063153e41d
ebitenutil: Speed up to avoid copying by image.Rect
2018-03-11 21:39:22 +09:00
Hajime Hoshi
61950817fa
audio: Bug fix: importing audio without NewContext causes error
2018-03-04 22:18:14 +09:00
Hajime Hoshi
647d8f0094
audio: Use time.NewTimer and Stop instead of time.After
...
Fixes #532
2018-03-04 19:23:38 +09:00
Hajime Hoshi
392ee92aeb
Add internal/hooks to replace internal/audiobinding
2018-02-04 17:33:17 +09:00
Hajime Hoshi
2322c5600b
audio: Revert the buffer size
...
This basically reverts df62b16270
.
2018-01-29 11:57:52 +09:00
Hajime Hoshi
d5d5ebb0b3
clock: Make ProceedAudioTimer take a number of frames
2018-01-07 18:32:19 +09:00
Hajime Hoshi
d12a3d4073
clock: Refactoring
2018-01-07 17:10:56 +09:00
Hajime Hoshi
0b3495b81f
audio: Use mock sync on browsers
2018-01-07 15:26:18 +09:00
Hajime Hoshi
df62b16270
audio: Use bigger buffer size for mobile phones
2017-12-31 01:28:08 +09:00
Hajime Hoshi
97ec367e23
audio: Use :=
2017-12-30 21:18:34 +09:00
Hajime Hoshi
65c0bf55fc
audio: Fix buffer size for the latest Oto
2017-12-28 20:37:36 +09:00
Hajime Hoshi
623caad3ec
audio: Bug fix: appropriate buffer size on browsers
2017-12-25 01:54:55 +09:00
Hajime Hoshi
60eef4618d
audio: Revert size (due to noise on browsers)
2017-12-25 00:16:47 +09:00
Hajime Hoshi
4a06198160
audio: Smaller buffers (experimental)
2017-12-24 22:16:45 +09:00
Hajime Hoshi
5679103d71
audio: Use io.CopyN
2017-12-24 21:21:15 +09:00
Hajime Hoshi
e14257d76d
audio: A little better buffer size for Android Chrome
2017-12-24 04:01:41 +09:00
Hajime Hoshi
ae6bdf23f2
audio: Recalculate audio buffer size
2017-12-24 03:54:42 +09:00
Hajime Hoshi
18c6890d96
audio: More often reading (decoding) audio source to reduce noise
2017-12-24 00:58:14 +09:00
Hajime Hoshi
7ce87a6c82
audio: Simplify read/write logic
2017-12-24 00:51:17 +09:00
Hajime Hoshi
00d8d61795
audio: Adjust buffer size
2017-12-23 23:15:44 +09:00
Hajime Hoshi
f3997cf5ae
audio: Fix comments
2017-12-23 21:14:08 +09:00
Hajime Hoshi
a540d6b2bb
audio: Adjust buffer size
2017-12-23 19:59:52 +09:00
Hajime Hoshi
19ca74e86b
audio: Remove player's mutex
2017-12-23 19:01:28 +09:00
Hajime Hoshi
637ed0d965
audio: Refactoring
2017-12-23 18:39:14 +09:00
Hajime Hoshi
04739a7249
audio: Bug fix: Seek might cause dead lock after Close
2017-12-23 18:31:20 +09:00
Hajime Hoshi
db77658935
audio: Reduce locks by using channels
2017-12-23 17:55:48 +09:00
Hajime Hoshi
ba3de063ac
audio: Refactoring
2017-12-23 17:05:14 +09:00
Hajime Hoshi
3dcb486a5c
audio: Refactoring
2017-12-23 05:02:15 +09:00
Hajime Hoshi
7cc6154de6
audio: Reduce noise ( #443 )
2017-12-23 04:25:48 +09:00
Hajime Hoshi
3addbfce8a
audio: Simplify error handling
2017-12-23 04:12:12 +09:00
Hajime Hoshi
a21571fb57
audio: Refactoring
2017-12-23 04:01:18 +09:00
Hajime Hoshi
a5f8c1b1f8
audio: Async reading sources ( #443 )
2017-12-23 03:24:54 +09:00
Hajime Hoshi
7b76b7822f
audio: Fix comments
2017-12-17 01:24:45 +09:00
Hajime Hoshi
7cd89bc44b
audio: Adjust buffer size for Android Chrome
2017-12-17 01:20:10 +09:00
Hajime Hoshi
7f9afd4e14
audio: Unify buffer size 1/15[s] experimentally
...
This would mitigate glitches on Windows (#451 )
2017-12-17 00:41:35 +09:00
Hajime Hoshi
6956e15b08
audio: Fix comments
2017-12-02 16:26:20 +09:00
Hajime Hoshi
3db965d547
audio: Fix doc
2017-12-01 01:38:47 +09:00
Hajime Hoshi
0379e3c591
audio: Deprecate Update
2017-12-01 00:26:28 +09:00
Hajime Hoshi
2624ed6824
audio: Refactoring
2017-10-14 19:45:32 +09:00
Hajime Hoshi
626b772b25
doc: Improve comments
2017-10-01 17:24:30 +09:00
Hajime Hoshi
fe2380f1ab
audio: Add comments
2017-09-26 00:38:50 +09:00
Hajime Hoshi
a225f666ac
audio: Bug fix: Race condition on 'pos' member ( #413 )
2017-08-17 11:48:29 +09:00
Hajime Hoshi
8c3a020693
audio: Bug fix: Race condition when seeking ( #413 )
2017-08-17 11:44:30 +09:00
Hajime Hoshi
3216d50460
audio: Refactoring
2017-08-17 11:15:04 +09:00
Hajime Hoshi
ba75592807
audio: Bug fix: Race condition ( #412 )
2017-08-17 11:05:59 +09:00
Hajime Hoshi
95a061df7f
loop: Remove dependency from audio to loop
2017-08-06 01:43:09 +09:00
Hajime Hoshi
2e7a477f9d
clock: Refactoring
2017-08-06 01:28:14 +09:00
Hajime Hoshi
b7d559fdf3
clock: Refactoring: Move frames calculation to clock
2017-08-06 00:18:38 +09:00
Hajime Hoshi
a92f77c207
clock: Rename function names; loop: Rename variables
2017-08-05 22:25:21 +09:00
Hajime Hoshi
94843fbe73
loop: Move clock.FPS to loop.FPS to reduce dependencies
2017-08-05 22:08:58 +09:00
Hajime Hoshi
b15ad9c1d0
audio: Refactoring
2017-07-15 16:31:08 +09:00
Hajime Hoshi
5fd8fe839b
audio: Simplify player's Read/Seek
2017-07-15 03:15:54 +09:00
Hajime Hoshi
59110ba5ec
clock: Refactoring: Use clock.FPS everywhere
2017-07-14 03:19:50 +09:00
Hajime Hoshi
8dda875c30
doc: Explaing about audio syncing
2017-07-14 02:26:41 +09:00
Hajime Hoshi
7f320f9518
audio: Fix doc
2017-07-14 01:45:36 +09:00
Hajime Hoshi
3d8fc790b6
loop: Remove dependency on audio
2017-07-14 01:42:58 +09:00
Hajime Hoshi
5d1d0844e1
Add internal/clock
2017-07-14 00:34:05 +09:00
Hajime Hoshi
c3202b8e58
audio: Adjust the buffer size
2017-07-13 23:48:03 +09:00
Hajime Hoshi
3454b32cb6
audio: Bug fix: oto.Player must not be called on init
2017-07-13 01:34:02 +09:00
Hajime Hoshi
80b10b2d49
audio: Use variables instead of channels to avoid GopherJS bugs
2017-07-13 01:34:02 +09:00
Hajime Hoshi
fdaf03b209
audio: Make the game loop depend on the audio clock
2017-07-13 01:33:59 +09:00
Hajime Hoshi
079395dd6f
audio: Better variable name
2017-07-09 05:14:13 +09:00
Hajime Hoshi
2552f1625d
audio: Discard audio data when queue seems full
2017-07-09 05:06:34 +09:00