1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-16 00:49:54 +00:00
Commit graph

189 commits

Author SHA1 Message Date
Chris Robinson
2883cdba5c Initialize the Sound object before modifying the pitch variable 2015-12-02 16:09:24 -08:00
Chris Robinson
a6db96b2d8 Update sound and stream parameters 2015-12-02 16:09:24 -08:00
Chris Robinson
4bd235284b Rename a couple members to avoid confusion 2015-12-02 16:09:24 -08:00
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