Chris Robinson
1ce3e7f5b9
Use a separate type for streams
...
They're basically the same, but it's to help avoid accidents with passing non-
streaming sounds to the stream functions, or vice-versa.
2015-12-02 16:09:24 -08:00
Chris Robinson
816015d6e6
Avoid inheriting from Sound for sound types
2015-12-02 16:09:24 -08:00
Chris Robinson
4ee409af84
Load loudness data asynchronously
...
Currently abuses the output audio streams' background processing thread to do
the work, since there's no generalized threaded processing mechanism.
2015-11-27 09:47:14 -08:00
Chris Robinson
0f05ccf72a
Use a non-recursive mutex and properly end the streaming thrread
2015-11-27 08:13:23 -08:00
Chris Robinson
b5ed2e65f8
Add a method to get the sound stream delay
...
This helps avoid a lock during the movie player's read method, since it needs
to sync with the current playback position which would otherwise need to get
the movie decoder's current position.
2015-11-27 06:01:50 -08:00
Chris Robinson
f3c035907c
Rename Sound::update to Sound::applyUpdates
2015-11-27 04:55:17 -08:00
Chris Robinson
9568aa6a84
Use a condition variable to wake up the audio stream thread
...
This should make starting streams a bit more responsive, and allows us to do
more in it that really shouldn't wait for its next wake up.
2015-11-27 04:30:09 -08:00
Chris Robinson
82f3651f81
Treat the sound offset as the offset in seconds
2015-11-27 02:01:17 -08:00
Chris Robinson
8f08ca9cba
Revert "Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting"
...
This reverts commit 0d4fea896c
.
2015-11-25 06:06:27 -08:00
Chris Robinson
0d4fea896c
Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting
2015-11-25 04:24:27 -08:00
Chris Robinson
a1bdb544db
Avoid an unnecessary string copy
2015-11-25 04:24:27 -08:00
Chris Robinson
669b7a2295
Batch update changes together, when possible
...
Certain OpenAL implementations, including Rapture3D, Creative's hardware
drivers, and more recent versions of OpenAL Soft, can batch together changes so
that they all occur at once, avoiding potential discontinuities with one sound
being changed before another, or the listeenr being changed before sounds are.
On other implementaitons, this is a no-op and maintains existing behavior.
2015-11-25 04:24:26 -08:00
Chris Robinson
ea70b0baee
Don't store the buffer in the sound struct
2015-11-25 04:24:25 -08:00
Chris Robinson
45628316f8
Remove an unnecessary check
2015-11-25 04:24:25 -08:00
Chris Robinson
5ad772c3b3
Fix streaming sound time
2015-11-25 04:24:25 -08:00
Chris Robinson
f7218f5a25
Use proper mutex mechanisms and don't check al errors in the stream thread
2015-11-25 04:24:24 -08:00
Chris Robinson
fbfcc4050f
Stream voice clips
...
Voices tend to be a bit long, and not individually replayed often. So it's
better to stream them instead of loading theminto a sound buffer. The loudness
data is very small, though, so that can be kept buffered indefinitely.
2015-11-25 04:24:24 -08:00
Chris Robinson
eee6a19e31
Add a method to stream sounds in 3D
2015-11-25 04:24:24 -08:00
Chris Robinson
f1a1dc8408
Pass relevant sound parameters to the OpenAL_SoundStream constructor
2015-11-25 04:24:24 -08:00
Chris Robinson
83721092f2
Refactor the audio streaming code to be a bit saner
2015-11-25 04:24:23 -08:00
Chris Robinson
16f72886e9
Use separate lists for openal sounds and streams
2015-11-25 04:24:23 -08:00
Chris Robinson
22a6811425
Limit the sound buffer cache to 15MB
2015-11-25 04:24:23 -08:00
Chris Robinson
495e138907
Load sound loudness and store it with the Sound_Buffer
...
Still not used for say yet, though
2015-11-25 04:24:22 -08:00
Chris Robinson
f4c22ec49e
Hold a separate list for voice sound buffers
...
This fixes say. Ideally voices would be streamed, but the loudness/"lip" buffer
extraction should be separated from the buffer loading code.
2015-11-25 04:24:22 -08:00
Chris Robinson
4571218827
Load the sound as needed and pass it directly to the play methods
...
This breaks say sounds, loudness handling, and the cache limit. Fixes are
forthcoming.
2015-11-25 04:24:22 -08:00
scrawl
84fd682e4e
Fix for unnecessary exceptions when opening sounds
...
This would throw often during normal play, even though the throws are caught and ignored, can be annoying when the debugger is set to 'catch throw'.
2015-06-01 00:41:44 +02:00
scrawl
7a3bc69df7
Readded sound listener
2015-05-12 19:02:56 +02:00
scrawl
8c7c89a4aa
Port SoundManager
2015-04-13 22:48:37 +02:00
dteviot
e197f5318b
fixing MSVC 2013 warning C4244: & C4305
...
conversion from 'const float' to 'int', possible loss of data
conversion from 'double' to 'int', possible loss of data
conversion from 'float' to 'int', possible loss of data
2015-03-08 13:07:29 +13:00
scrawl
855fe33c59
Add vanilla-compatible range limiting for playloopsound ( Fixes #244 , Fixes #1342 )
2014-12-08 23:58:20 +01:00
scrawl
cf85cbbc8e
Switch sound distance model to AL_INVERSE_DISTANCE
2014-12-08 17:43:56 +01:00
scrawl
a59620f643
Cache loudness vector in the buffer cache
2014-07-29 14:32:44 +02:00
scrawl
598c0c4ae7
Implement mouth animation for NPCs based on say sound ( Fixes #642 )
2014-07-29 01:15:22 +02:00
slothlife
f33559fead
Fixes for MSVC warnings, less overall changes
...
Kept some fixes from the first round of review. Found out that several
targets weren't being built with the same basic warnings disabled.
Disabled a few warnings for external libraries specifically, rather than
applying them to all targets.
2014-05-14 20:12:52 -05:00
slothlife
c160a04ede
Revert "Fixes for warnings when building with MSVC"
...
This reverts commit 46eb20b98c
.
2014-05-14 00:03:30 -05:00
slothlife
46eb20b98c
Fixes for warnings when building with MSVC
...
Most warnings are innocuous (wrong type-specifier for forward
declarations, conversion of literals into unsigned integers, warnings
about methods optimized out), but I believe actual bugs were revealed in
vartypedelegate.cpp and combat.cpp.
2014-05-09 08:32:52 -05:00
Bret Curtis
ab224f93c9
remove our stdint.h version that uses boost and force usage of system stdint.h
2014-03-05 17:08:58 +01:00
Marc Zinnschlag
736644de05
Revert " #1041 in progress: decode first sample batch right in OpenAL_SoundStream::play()"
...
This reverts commit 51fb9f65ea
.
2014-02-20 12:31:40 +01:00
Nikolay Kasyanov
51fb9f65ea
#1041 in progress: decode first sample batch right in OpenAL_SoundStream::play()
2014-02-17 02:59:23 +04:00
Nikolay Kasyanov
5e8cb2e466
Another attempt to fix #1041 . This time I'm sending real data from decoder
...
once after playback started.
2014-02-17 02:35:13 +04:00
scrawl
396efd580b
Fix a leftover of the old coordinate system
2014-01-14 03:26:56 +01:00
Marc Zinnschlag
5cafe65cd7
Merge remote-tracking branch 'scrawl/cppcheck'
2013-07-31 20:00:35 +02:00
scrawl
7dc30a01cd
Some changes suggested by cppcheck
2013-07-31 18:46:32 +02:00
PLkolek
f297c21e4d
Old door sound fades out on door open/close. Door sound is synchronised to angle on action.
2013-07-31 15:46:23 +02:00
scrawl
c41f119ba6
Added new game button
2013-05-15 17:54:18 +02:00
Chris Robinson
ceafcc2ebb
Support float samples with ffmpeg
...
Requires the AL_EXT_FLOAT32 extension in OpenAL
2013-02-26 10:19:33 -08:00
Chris Robinson
3b7edae7c3
Don't hold a list of all sound sources
2012-12-18 05:19:32 -08:00
Chris Robinson
2f8daec379
Allow pausing only certain types of sounds
2012-12-18 04:19:35 -08:00
Chris Robinson
dd3e568a00
Set the sound properties at initialization
2012-12-17 23:35:20 -08:00
Chris Robinson
20321c4552
Keep track of the actual active sounds
2012-12-17 21:50:01 -08:00
Chris Robinson
32b0a5d96e
Update the queued sample count immediately
2012-12-14 23:42:49 -08:00
Chris Robinson
0a5ab977b7
Use the decoder's sample offset for calculating the stream offset
2012-12-13 05:04:53 -08:00
Chris Robinson
1ea1407707
Support quad, 5.1, and 7.1 with OpenAL and ffmpeg
...
The other decoders don't guarantee any channel ordering, which makes them
useless.
2012-12-13 04:10:19 -08:00
Chris Robinson
f067b22b3f
Use a recursive mutex for the OpenAL stream thread
2012-12-13 02:33:35 -08:00
Chris Robinson
ba9c5f5b4e
Don't initially fill buffers in OpenAL_SoundStream::play
2012-12-13 02:32:21 -08:00
Chris Robinson
1571243ef0
Implement getTimeOffset for OpenAL_SoundStream
2012-12-12 23:16:45 -08:00
Chris Robinson
86bf6388c6
Pass a decoder to the playStream sound output method
2012-12-12 22:32:02 -08:00
Chris Robinson
34e36fb852
Add a method to get the time offset from sounds
2012-12-12 16:50:35 -08:00
Chris Robinson
2c1eceb9f0
Add methods to pause and stop all playing sounds (and music)
2012-12-12 02:33:12 -08:00
Chris Robinson
973b5faf25
Keep track of all allocated sources
2012-12-12 01:32:16 -08:00
Chris Robinson
c2e1595445
Treat paused sounds as still playing
2012-12-11 21:01:32 -08:00
Marc Zinnschlag
6bd48d12af
Issue #107 : SoundManager is accessed only through the interface class from now on
2012-08-09 14:33:21 +02:00
Chris Robinson
b3caf82714
Avoid using vector<>::data(), which requires C++11
2012-05-01 10:12:45 -07:00
Chris Robinson
b8be867e6e
Work around a bug in the Windows OpenAL router
2012-04-07 14:58:52 -07:00
Chris Robinson
87e8917c4d
Don't try to play sounds when no sound output is initialized
2012-04-06 10:43:14 -07:00
Chris Robinson
9c06bfc8fc
Merge remote branch 'zini/master' into sound
2012-03-31 14:26:21 -07:00
Alexander "Ace" Olofsson
64f792c01d
Fix a value defined at the wrong place
2012-03-31 21:05:33 +02:00
Chris Robinson
4944a29b21
Keep track of the sound pitch
2012-03-31 10:41:12 -07:00
Chris Robinson
cbf6c0404a
Implement a basic underwater sound environment
2012-03-31 10:06:12 -07:00
Chris Robinson
575474ff69
Pass the mode flags to the sound output play methods
2012-03-31 08:14:39 -07:00
Chris Robinson
bfac946878
Finally "fix" --nosound
...
Expect degraded performance with it. Looping sounds are constantly checked to
see if they're playing, and try to play it again when it's not.
2012-03-31 03:31:41 -07:00
Chris Robinson
28378c063b
Minor OpenAL_SoundStream cleanups
2012-03-31 02:22:23 -07:00
Chris Robinson
b01289128b
Split OpenAL_Sound into separate classes for 2D and 3D sounds
2012-03-31 01:15:27 -07:00
Chris Robinson
5adeee20fd
Mute sounds that go outside the max distance
2012-03-31 00:57:29 -07:00
Chris Robinson
fc167dbc83
Pass Ogre Vector3s to playSound3D and updateListener
2012-03-30 11:42:11 -07:00
Chris Robinson
fefc8f86ab
Remove the unused streamSound3D method
2012-03-30 11:11:07 -07:00
Chris Robinson
1ee8b963d0
Store the sound listener position as well
2012-03-30 07:30:17 -07:00
Chris Robinson
fad27d99e6
Update the actual sound volume with the position
2012-03-30 07:10:34 -07:00
Chris Robinson
479df78ea1
Update the actual sound position after the listener
2012-03-30 07:01:37 -07:00
Chris Robinson
de102cd274
Simplify broken OpenAL workaround
2012-03-30 06:28:40 -07:00
Nikolay Kasyanov
b6aa8925f4
(Temporary) workaround for broken OpenAL implementations that doesn't return meaningful max counts of sources
2012-03-30 00:12:38 +04:00
Nikolay Kasyanov
20f976ddc7
probably openal initialization fix
2012-03-29 03:02:26 +04:00
Chris Robinson
bedf56a237
Merge remote branch 'zini/next' into sound
2012-03-28 06:27:34 -07:00
Chris Robinson
293f33914e
Use a deque fpr OpenAL's free sources
2012-03-28 05:35:51 -07:00
Chris Robinson
a3291ef360
Add a sound method to update the volume
2012-03-28 05:19:35 -07:00
Chris Robinson
c072babd17
Better handle bad OpenAL source counts
2012-03-28 04:56:40 -07:00
Chris Robinson
c6c06f1140
Return SoundPtr objects from the playSound and streamSound methods
2012-03-27 05:59:09 -07:00
Alexander "Ace" Olofsson
55f1053b4f
Windows fixes for compiling and linking
2012-03-27 00:36:53 +02:00
Chris Robinson
7b3ecc290e
Fix compilation with older OpenAL headers
2012-03-26 01:12:06 -07:00
Chris Robinson
5cb90ab704
Add some dummy copy constructors and assignment operators to prevent implicit versions from being used
2012-03-24 03:49:03 -07:00
Chris Robinson
1ccddefe28
Properly report the default device when opening sound fails
2012-03-23 00:31:01 -07:00
Chris Robinson
2f0af42261
Use the ALC_ENUMERATE_ALL_EXT extension with OpenAL when available
2012-03-22 23:51:00 -07:00
Chris Robinson
15317796bf
Handle the wav -> mp3 extension conversion in the sound output backend
2012-03-21 22:49:40 -07:00
Chris Robinson
f11e3e39a1
Add an enumerate method to the sound output interface
2012-03-21 20:15:01 -07:00
Chris Robinson
8c5f85ca83
Use a local variable to mark sound streams as finished while processing
...
This avoids a race condition where the source can underrun while the final
buffers are being queued and the sound can be detected as stopped
2012-03-21 14:49:29 -07:00
Chris Robinson
0d973ac8ff
Use the vector's data field instead of the address of the first element
...
Same thing really, but less convoluted
2012-03-21 14:38:37 -07:00
Chris Robinson
26a441f29a
Add a readAll method to the sound decoder, for potentially more efficient reading
2012-03-20 17:57:28 -07:00
Chris Robinson
fd37a4827c
Enforce a 15MB limit on the sound buffer cache
2012-03-19 13:19:22 -07:00
Chris Robinson
6c45d6668b
Cache OpenAL buffers for easy reuse
2012-03-19 10:33:06 -07:00
Chris Robinson
91821ccd8c
Add the sound stream to the thread after resetting the mIsFinished flag
2012-03-19 09:08:59 -07:00