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

232 commits

Author SHA1 Message Date
Chris Robinson
e48d125a84 Only allow one instance of a given tracked soundid
The untracked flag should probably be broken up and combined with the loop
boolean into a set of flags.
2012-03-31 05:57:03 -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
7541e08909 Don't reset the sound Output device if init fails 2012-03-31 02:48:14 -07:00
Chris Robinson
28378c063b Minor OpenAL_SoundStream cleanups 2012-03-31 02:22:23 -07:00
Chris Robinson
4e908aa095 Add a method to set the sound's position 2012-03-31 01:34:26 -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
71d9d7e943 Store the current sound position with the Sound object 2012-03-30 06:41:06 -07:00
Chris Robinson
de102cd274 Simplify broken OpenAL workaround 2012-03-30 06:28:40 -07:00
Chris Robinson
33a63d88a5 Merge remote branch 'zini/master' into sound 2012-03-30 06:22:19 -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
Chris Robinson
3d5384e2bb Remove some unneeded casts 2012-03-29 11:28:33 -07: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
be337ef7cc Return SoundPtr objects from playSound[3D]
Note that each Sound object currently contains "precious" resources even after
the sound is stopped. The reference should be reliquished as soon as it's no
longer needed (the SoundManager will make sure the sound continues to play
until it's finished).
2012-03-28 06:08:25 -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
7008bd2fe1 Store some sound properties in the Sound class 2012-03-28 04:58:47 -07:00
Chris Robinson
c072babd17 Better handle bad OpenAL source counts 2012-03-28 04:56:40 -07:00
Chris Robinson
089c340935 Switch the map so the SoundPtr is used as a key 2012-03-28 04:37:00 -07:00
Marc Zinnschlag
a996cfed71 Merge remote branch 'ace/win-fixes' into next 2012-03-27 20:11:46 +02:00
Chris Robinson
c6c06f1140 Return SoundPtr objects from the playSound and streamSound methods 2012-03-27 05:59:09 -07:00
Chris Robinson
f0db2ab82f Split stopSound3D into separate functions to deal with stopping all sounds on an object 2012-03-27 03:20:50 -07:00
Chris Robinson
033faba9c4 Make a function parameter const 2012-03-27 03:00:04 -07:00
Chris Robinson
c2611d035c Use a pair to match the MWWorld::Ptr object and sound ID, instead of nested maps 2012-03-27 02:50:45 -07:00
Alexander "Ace" Olofsson
55f1053b4f Windows fixes for compiling and linking 2012-03-27 00:36:53 +02:00
Lukasz Gromanowski
be94da1527 Issue #225: Initialize class members in constructor. 2012-03-27 00:34:06 +02:00
Chris Robinson
0d552c10bc Use an empty MWWorld::Ptr object for non-3D sounds 2012-03-26 04:10:47 -07:00
Chris Robinson
7b3ecc290e Fix compilation with older OpenAL headers 2012-03-26 01:12:06 -07:00
Chris Robinson
3e98e28059 Use a better method to get a more even randomization 2012-03-24 21:05:03 -07:00
Chris Robinson
71d3f9bd51 Get the object reference's position once when updating its sounds 2012-03-24 08:12:04 -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
fa70a72b75 Remove some unused sound manager fields and constructor parameters 2012-03-24 00:22:54 -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
277597c567 Fix DEFAULT_OUTPUT for OpenAL_Output 2012-03-22 18:44:55 -07:00
Chris Robinson
2e28819243 Avoid trying to play an ambient sound if there's no chance for any to play 2012-03-22 18:39:10 -07:00
Chris Robinson
bac6df5563 Avoid leaking an ffmpeg stream 2012-03-21 23:32:24 -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
366c97c492 Use a separate method to check for finished sounds and update the listener 2012-03-21 19:24:38 -07:00
Chris Robinson
e6fe1c0261 Remove a mostly unneeded wrapper function 2012-03-21 19:08:11 -07:00
Chris Robinson
aecc77a73c Replace the sound file extension when opening fails
This should make it more efficient to lookup a sound instead of checking each
time it's played. A better method would perhaps be to check if the resource
exists when the ESM is loaded and replace it then as needed.
2012-03-21 18:42:48 -07:00
Chris Robinson
8056a7f20b Throw an exception when looking up a sound instead of returning an empty string 2012-03-21 18:20:32 -07:00
Chris Robinson
9a139f511f Avoid redefining SOUND_IN 2012-03-21 15:29:05 -07:00
Chris Robinson
56c3b988cc Avoid copying the region when looking for a sound to play 2012-03-21 15:19:40 -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
6a85ef1229 Set Ogre's data stream to NULL when closing the audio file 2012-03-21 14:46: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
fd8326e958 Better handle some ffmpeg errors 2012-03-21 12:20:36 -07:00
Chris Robinson
7b22ee6fd1 Use for_each to clear the ffmpeg stream packets 2012-03-20 21:46:12 -07:00
Chris Robinson
2989a1e06e Improve ffmpeg failure messages 2012-03-20 18:57:11 -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
deb473b9ae Implement the ffmpeg decoder 2012-03-20 17:05:19 -07:00
Chris Robinson
9a48002025 Fix compilation of the FFmpeg decoder 2012-03-20 14:13:58 -07:00
Chris Robinson
e48745b68e Fix streamMusic's path lookup 2012-03-20 12:39:49 -07:00
Chris Robinson
fc27d5cc19 Restore music playback 2012-03-20 11:31:13 -07:00
Chris Robinson
5ae47f783e Use the sound manager's update to make sure music is still playing 2012-03-20 10:46:10 -07:00
Chris Robinson
0261aac518 Use Ogre's resource group manager to handle sound files 2012-03-20 10:34:36 -07:00
Chris Robinson
80dbf82a74 Explicitly stop sounds instead of relying on their deletion to do it 2012-03-20 07:22:17 -07:00
Chris Robinson
74e79bb4af Merge remote branch 'zini/master' into sound-rewrite
Conflicts:
	apps/openmw/mwsound/soundmanager.cpp
	apps/openmw/mwsound/soundmanager.hpp
2012-03-20 06:17:02 -07:00
Chris Robinson
fd37a4827c Enforce a 15MB limit on the sound buffer cache 2012-03-19 13:19:22 -07:00
Chris Robinson
04638516b2 Check for stopped active sounds too and remove them 2012-03-19 12:08:40 -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
Michael Papageorgiou
d10b18b0f3 Removed a couple of warnings with nosound 2012-03-18 22:50:52 +02:00
Michael Papageorgiou
f567950e25 Fix for the --nosound crash 2012-03-18 22:38:53 +02: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
162642e672 Prefix some SoundManager class member variables 2012-03-18 11:17:45 -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
a256b9a7b0 Remove a comment about Audiere 2012-03-18 08:42:55 -07:00
Chris Robinson
3fea3e7d25 Fix stereo files with libsndfile 2012-03-17 23:47:12 -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
ddfa906922 Add a missing include 2012-03-17 22:45:28 -07:00
Chris Robinson
a69ec91242 Remove some unnecessary wrappers and do some small cleanups 2012-03-17 22:13:57 -07:00
Chris Robinson
a91085a1b9 Add a couple comments 2012-03-17 10:45:11 -07:00
Chris Robinson
7160d20db3 Be more consistent with the vector orientations given the sound handler 2012-03-17 10:36:34 -07:00