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
Hajime Hoshi
5cf7b2491a
audio: Bug fix: noise on audio
2017-07-09 04:09:21 +09:00
Hajime Hoshi
d0778b5253
audio: Avoid using time.After on browsers for performance
2017-07-02 17:27:07 +09:00
Hajime Hoshi
45ca2a1f79
audio: Bug fix: possible overflow and closing nil channel
2017-07-02 16:28:02 +09:00
Hajime Hoshi
1fe2d90d8a
audio: Bug fix: Write can block and needs to be called asynchronously ( #373 )
2017-06-29 03:36:19 +09:00
Hajime Hoshi
1f28c687cf
audio: Bug fix: Seeking might block forever when another seeking is not done yet
2017-06-24 23:33:19 +09:00
Hajime Hoshi
d8f425962c
audio: Bug fix: players' buffer can be empty when seeking before proceeding ( #366 )
2017-06-11 19:13:45 +09:00
Hajime Hoshi
1da2e35b7a
android: Adjust the buffer size to reduce noise on Android
2017-06-04 22:42:12 +09:00
Hajime Hoshi
3b9e6c2708
audio: Use the new oto API
2017-06-04 21:09:42 +09:00
Hajime Hoshi
8957b1b857
audio: Non-blocking reading buffers
2017-06-04 16:46:02 +09:00
Hajime Hoshi
10bd1c1786
audio: byte -> uint8
2017-06-04 16:05:22 +09:00
Hajime Hoshi
17d6ea16de
audio: More narrow critical section
2017-06-04 04:37:59 +09:00
Hajime Hoshi
7ad82dab44
audio: Bug fix: consider seeking streams when reading multiple sources
2017-06-04 04:05:30 +09:00
Hajime Hoshi
cf452bb709
audio: Bug fix: nosync might cause unexpected panics because of runtime.Gosched
2017-06-04 03:42:26 +09:00
Hajime Hoshi
873b3905df
audio: Split locks
2017-06-04 03:14:48 +09:00
Hajime Hoshi
e7478b794a
audio: Change the spec: Now audio.Player's functions are always concurrent safe
2017-06-04 02:52:11 +09:00
Hajime Hoshi
f53a55b63a
audio: Bug fix: some fields need to be protected by mutex
2017-06-04 02:45:38 +09:00
Hajime Hoshi
579491afbd
audio: Clarify concurrent safety
2017-06-04 01:03:01 +09:00
Hajime Hoshi
98c48463d2
audio: NewPlayerFromBytes now never returns errors
2017-06-03 01:12:58 +09:00
Hajime Hoshi
1b72263ce1
sync: Add sync package
2017-05-27 02:37:01 +09:00
Hajime Hoshi
64862929a9
audio: Fix usage of 'oto'
2017-05-05 15:13:46 +09:00
Hajime Hoshi
766072cdbb
audio: Make 'oto' package and use that ( #351 )
2017-05-04 21:09:02 +09:00
Hajime Hoshi
858824821f
doc: Remove 'concurrent-safe' comments from most of non-global functions
2017-04-18 01:33:03 +09:00
Hajime Hoshi
1497d52928
audio: Add comments about errors ( #331 )
2017-04-18 00:59:10 +09:00
Hajime Hoshi
b0454b874e
Fix frame counters to int64 ( #337 )
2017-04-06 00:45:28 +09:00
Hajime Hoshi
ebedb24e43
audio: Update doc for errors ( #331 )
2017-04-05 01:12:02 +09:00
Hajime Hoshi
892d5d07d0
audio: Remove TODO
2017-03-27 22:48:57 +09:00
Hajime Hoshi
bb435b7296
audio: Remove NopCloser and Add BytesReadSeekCloser
2017-01-16 02:36:18 +09:00
Hajime Hoshi
8b4389856d
audio: Add NopCloser
2017-01-16 02:21:21 +09:00
Hajime Hoshi
14165cc67e
audio: Fix comment
2017-01-15 18:02:21 +09:00
Hajime Hoshi
bf4e453cdb
audio: Ignore seeking players
2016-11-29 03:36:16 +09:00
Hajime Hoshi
38af8ce615
audio: Remove unneeded locks
2016-11-29 03:01:52 +09:00
Hajime Hoshi
61676616a7
audio: At most one audio context can exist ( #271 )
2016-10-02 22:18:44 +09:00
Hajime Hoshi
c634c588e5
audio: Bug fix: there could be chunks after 'data' chunk
2016-09-27 00:37:40 +09:00
Hajime Hoshi
d162843fbb
audio: Add comment
2016-09-26 23:08:34 +09:00
Hajime Hoshi
d6c1bb2ae8
audio: Fix a comment
2016-06-28 02:50:13 +09:00
Hajime Hoshi
5551a70776
audio: Fix a comment of (*Player).Close
2016-06-27 13:53:29 +09:00
Hajime Hoshi
b02d89cdc3
audio: Add NewPlayerFromBytes ( #231 )
2016-06-27 02:23:08 +09:00
Hajime Hoshi
a2402c32c0
audio: Check the stream can be used or not
2016-06-27 02:02:01 +09:00
Hajime Hoshi
4c2bbd47a1
audio: Fix a comment
2016-05-26 23:33:12 +09:00
Hajime Hoshi
12d62621e9
audio: Bug fix: Play sound correctly on Android
2016-05-26 01:46:26 +09:00
Hajime Hoshi
0ee6b4405c
audio: Bug fix: Lazy initialization of audio context
2016-05-25 03:47:59 +09:00
Hajime Hoshi
9a18ffe563
audio: Change NewPlayer to be an independent function
2016-04-19 23:43:54 +09:00
Hajime Hoshi
b0178e8425
audio: Move exp/audio -> audio ( #206 )
2016-04-19 01:26:37 +09:00