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

186 commits

Author SHA1 Message Date
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
Chris Robinson
db46bf39b3 Add a rewind method to the sound decoder 2012-03-19 08:48:25 -07:00
Chris Robinson
afa2cb6de7 Stop trying to read decoded audio once it's finished 2012-03-19 07:51:28 -07:00
Chris Robinson
4f69972a9c Add a method to stream a sound in 3D 2012-03-19 07:28:03 -07:00
Chris Robinson
ae8218bf03 Allocate OpenAL sources when opening the device
This allows sources to be more efficiently retrieved and returned
2012-03-19 07:11:01 -07:00
Chris Robinson
8f9d4ff841 Use 6 125ms buffers for OpenAL streams 2012-03-19 05:29:04 -07:00
Chris Robinson
dc6354b2f9 Add functions to get string names for sample types and channel configs 2012-03-19 02:31:40 -07:00
Chris Robinson
4a0b5b7918 Increase the sound stream thread sleep time to 50ms 2012-03-19 02:19:13 -07:00
Chris Robinson
4698e8c0a2 Make the sound stream thread object per-device 2012-03-19 02:15:08 -07:00
Chris Robinson
2c27827e4f Add some comment markers to the OpenAL sound classes 2012-03-19 01:33:33 -07:00
Chris Robinson
e234b90173 Use a loop to find the OpenAL format from the decoder format 2012-03-19 00:49:52 -07:00
Chris Robinson
6a256d3993 Make sure the OpenAL stream list is clear before shutting down 2012-03-19 00:38:56 -07:00
Chris Robinson
7194114669 Use a background thread to keep OpenAL streams fed
Maybe this could be moved to the SoundManager instead of in OpenAL, but it's
good enough for now.
2012-03-18 14:42:19 -07:00
Chris Robinson
b938fd7b36 Make the sound output init return void 2012-03-18 12:19:54 -07:00
Chris Robinson
1965b5bc79 Rename some Sound class member functions 2012-03-18 12:03:15 -07:00
Chris Robinson
403e51cef3 Move the sample type and channel config enums to MWSound and give use appropriate names for the values 2012-03-18 11:56:54 -07:00
Chris Robinson
efae7dfe83 Rename some sound decoder class member variables and functions 2012-03-18 11:47:15 -07:00
Chris Robinson
9656456d30 Make sure the sound decoders are closed when they're finished with 2012-03-18 11:34:23 -07:00
Chris Robinson
362e254720 Rename some more sound class member variables and functions 2012-03-18 11:30:53 -07:00
Chris Robinson
2f92559fc7 Use OpenAL's linear attenuation model
We should use the inverse distance clamped model (the default), but we first
need to handle muting sounds that are beyond their max distance. Linear
attenuation doesn't give a proper rolloff, but it makes the sounds silent at
max distance.
2012-03-18 09:05:38 -07:00
Chris Robinson
f7ac94d686 Pass the new position to the sound update method 2012-03-17 23:41:45 -07:00
Chris Robinson
44fc204864 Avoid passing a sound decoder to the play methods 2012-03-17 23:30:43 -07:00
Chris Robinson
7160d20db3 Be more consistent with the vector orientations given the sound handler 2012-03-17 10:36:34 -07:00
Chris Robinson
87adf6002a Fix a copy-paste typo in the openal output 2012-03-17 09:57:39 -07:00
Chris Robinson
5563f583ff Add and implement methods to update tracked sounds on an object 2012-03-17 09:51:03 -07:00
Chris Robinson
979ae89aab Pass volume and pitch parameters to streamed sounds 2012-03-17 09:37:41 -07:00
Chris Robinson
cac07d0fbf Remove some unnecessary methods 2012-03-17 09:27:31 -07:00
Chris Robinson
d57051375d Implement non-streaming sounds with OpenAL 2012-03-17 09:15:47 -07:00
Chris Robinson
656863ec6e Add functions to play sounds 2012-03-17 06:51:44 -07:00
Chris Robinson
a46f8ced05 Keep the sound output's listener updated with the camera position 2012-03-17 06:18:59 -07:00
Chris Robinson
2dabdcb9e5 Add a function to update the sound listener 2012-03-17 04:22:54 -07:00
Chris Robinson
2429755bf1 Make the sound's Play method return void 2012-03-17 03:20:43 -07:00
Chris Robinson
caf5d71d44 Make the sound decoder's Open method return void
Errors are thrown, not returned
2012-03-17 03:18:28 -07:00
Chris Robinson
1b41987e18 Move OpenAL_SoundStream function definitions out of the class 2012-03-17 03:15:07 -07:00
Chris Robinson
1ade01edc8 Add a function to stream sounds 2012-03-17 02:55:08 -07:00
Chris Robinson
1322b1e160 Move Sound_Output's definition to a separate header 2012-03-16 23:40:07 -07:00
Chris Robinson
45b612ab3b Add a skeleton output classs using OpenAL 2012-03-16 22:12:17 -07:00