Commit graph

501 commits

Author SHA1 Message Date
degasus
3ff4ec275a Throttler: Rename "framelimiter" to "emulation speed".
We don't throttle by frames, we throttle by coretiming speed.
So looking up VI for calculating the speed was just very wrong.
The new ini option is a float, 1.0f for fullspeed.
In the GUI, percentual values are used.
2016-01-05 23:39:05 +01:00
Ryan Houdek
1db01a8c56 [OpenSLES] Fix a delay in audio processing.
A failure on my part. I was updating the two buffers in the wrong order, so we were always a buffer behind in sending audio out to OpenSLES.
2016-01-03 11:33:38 -06:00
skidau
cfa925fbbe Updated SoundTouch library to 1.9.2 2015-12-28 23:08:55 +11:00
Markus Wick
164e045123 Merge pull request #3317 from lioncash/null
NullSound: Minor changes
2015-12-15 17:38:37 +01:00
Ryan Houdek
cb5be45f72 Merge pull request #3200 from degasus/master
Throttler + Mixer: Configureable variance
2015-12-11 07:04:56 -05:00
Lioncash
0917db7fc0 NullSound: Use std::array for the buffer 2015-12-05 18:13:55 -05:00
Lioncash
0d4baa0744 NullSound: Replace header define with private constant 2015-12-05 18:13:49 -05:00
Lioncash
e0eef7bef4 WaveFile: Get rid of an explicit delete 2015-12-02 20:05:18 -05:00
degasus
888c377b57 Throttler + Mixer: Configureable variance 2015-11-03 08:22:36 +01:00
shuffle2
9878004871 Merge pull request #3105 from phire/dont_block
ALSA: Don't block on Clear() call.
2015-10-03 17:55:26 -07:00
Lioncash
5464e698fc Merge pull request #3102 from rohit-n/build-pch
Fix building with PCH disabled.
2015-10-03 13:30:51 -04:00
Scott Mansell
a10a3ecbac ALSA: Don't block on Clear() call.
snd_pcm_writei() is meant to block block until all samples are written,
but apparently in some situations it can block for much longer, prehaps
even a infinite time, in the case of virtual machine FifoCI runs in.

Because it grabed a mutex before blocking, it could also block the
Clear() call for an infinite length of time, blocking dolphin's emu
thread.

snd_pcm_writei() also takes 10-15 seconds if you run dolphin under GDB
and can randomly take 5 or so seconds during normal usage.

By moving all the pause code to the ALSA thread, Clear() no-longer
blocks and everyone keeps their sanity.
2015-10-03 16:31:55 +13:00
Rohit Nirmal
6001366aac Alsa: Silence -Wsign-compare warning. 2015-10-02 21:10:06 -05:00
booto
6c28ea58ab AlsaSound: fix buffer type, clean up macros 2015-09-30 19:14:03 +08:00
Rohit Nirmal
3b75f45cf6 Fix building with PCH disabled. 2015-09-28 11:51:08 -05:00
Lioncash
cc036ca86c Common: Remove other Common prefixed headers from Common.h 2015-09-26 18:51:58 -04:00
Lioncash
1d42db2439 Common: Move NonCopyable to its own header 2015-09-26 18:50:35 -04:00
Ryan Houdek
f121d7a8cd Merge pull request #3026 from lioncash/constexpr
MathUtil: Make Clamp and IsPow2 constexpr functions.
2015-09-12 02:28:38 -04:00
Lioncash
b9e360df7b MathUtil: Convert Clamp into a constexpr function 2015-09-12 01:18:28 -04:00
LAGonauta
b98b55c7be Added X-Fi check and convert surround FLOAT to SHORT when it is detected
Fixed braces, first try fixing mac compilation and removed useless NULL
comparison.
2015-09-11 13:22:04 -03:00
Shawn Hoffman
aa7208e270 [windows] Update projects to vs2015. 2015-09-03 04:23:01 -07:00
Markus Wick
e60018abd4 Merge pull request #2854 from Tilka/valgrind
Fix some small stuff found with Valgrind
2015-08-15 20:52:12 +02:00
Markus Wick
3469694b46 Merge pull request #2676 from Stevoisiak/SpellingCorrections
Minor spelling corrections
2015-08-15 18:36:56 +02:00
Tillmann Karras
0b73a9ed25 PulseAudio: fix small memleak 2015-08-15 12:51:11 +02:00
Moncef Mechri
333f998123 Don't busy wait in the audio thread (ALSA)
When the emulation is paused and the ALSA backend is used, make the audio
thread wait on a condition variable instead of busy-waiting. This commit
fixes bug #7729

Since the ALSA API is not thread-safe, calls to snd_pcm_drop() and snd_pcm_prepare()
in AlsaSound::Clear() are protected by the same mutex as the condition variable in AlsaSound::SoundLoop()
to make sure that we do not call these functions while a call to
snd_pcm_writei() is ongoing.
2015-08-11 03:54:54 +02:00
Moncef Mechri
a0c5247743 Initialize ALSA before starting the audio thread
This fixes a race condition:

Before this commit, there was a race condition when starting a game:

Core::EmuThread(), after having started (but not necessarily completed)
the initialization of the audio thread, calls Core::SetState() which calls
CCPU::EnableStepping(), which in turns calls AudioCommon::ClearAudioBuffer().

This means that SoundStream::Clear() can be called before
AlsaSound::AlsaInit() has completed.
2015-08-11 03:54:54 +02:00
Markus Wick
e297e3e666 Merge pull request #2825 from lioncash/log
AudioCommon: Log to AUDIO, not DSPHLE
2015-08-10 10:25:51 +02:00
Moncef Mechri
8b767a1189 Use dummy audio backend if the selected backend fails to start
If the selected audio backend fails to Start() (which could happen for
example if there is no audio device), we currently still use the backend
anyway. This can lead to crashes on some platforms (such as Windows) and
is outright wrong anyway.

This commit fallbacks to the Null audio backend if the selected backend
couldn't be started.

This fixes bug #6001
2015-08-10 03:46:45 +02:00
Lioncash
4c6930d36c AudioCommon: Remove unused code from XAudio streams 2015-08-09 21:37:34 -04:00
Lioncash
3f78d74fc1 AudioCommon: Log to AUDIO, not DSPHLE
This code is not related to DSPHLE.
2015-08-09 21:36:03 -04:00
Lioncash
7ee0e75633 Remove unnecessary virtual keywords 2015-07-30 10:33:08 -04:00
Stevoisiak
7248f9b524 Minor spelling corrections 2015-06-29 14:51:21 -04:00
Jules Blok
a71e81a143 Merge pull request #2659 from Armada651/openal-conv
OpenALStream: Fix sample conversion.
2015-06-27 00:13:02 +02:00
Jules Blok
86dd81cf6b OpenALStream: Fix sample conversion.
Looks like it wasn't symmetric anymore.
2015-06-25 12:42:41 +02:00
Lioncash
9dd607b923 Mixer: Fix erroneous global prefixes on class variables 2015-06-20 21:48:50 -04:00
Lioncash
d81dffd4f0 Mixer: Devirtualize DTK and DSP audio logging functions
Their functionality is already complete in the base class; there's no need to allow overriding.
2015-06-20 21:46:20 -04:00
degasus
c375111076 Options: merge SCoreStartupParameter into SConfig 2015-06-12 19:07:45 +02:00
JosJuice
030d467d62 Use PanicAlert instead of PanicAlertT when appropriate
It means less work for the translators... But I'm not too sure
about this, because most of these have already been translated.
2015-06-04 13:25:17 +02:00
degasus
9a96e3c416 AudioCommon: Remove lock on Pause state
We had to lock audiocommon with the old asynchron HLE audio emulation,
now our Mixer is just a plain FIFO which may underrun.
Of course, this will stutter, but underruning the audio backend is likely worse.
2015-05-28 19:58:18 +02:00
Tillmann Karras
30ebb2459e Set copyright year to when a file was created 2015-05-25 13:22:31 +02:00
Tillmann Karras
cefcb0ace9 Update license headers to GPLv2+ 2015-05-25 13:22:31 +02:00
Tillmann Karras
268f52e054 Add missing license headers 2015-05-25 13:11:47 +02:00
Lioncash
6b30c9710c SoundStream: Devirtualize StartLogAudio and StopLogAudio
These don't rely on anything that might need to be implemented in other SoundStream classes.
2015-05-24 06:10:11 -04:00
Lioncash
07d4dbe657 AudioCommon: Add missing override specifiers
Also removes unnecessary virtual keywords.
2015-05-24 06:10:03 -04:00
Lioncash
4695233c98 SoundStream: Devirtualize GetMixer
Since it's handled by the base class, there's no need to allow overriding.
2015-05-24 05:49:51 -04:00
Lioncash
35ee8a1362 SoundStream: Internally construct the mixer
Instead of creating the mixer externally and then passing it in, it can just be made within the class.
2015-05-24 05:49:41 -04:00
Lioncash
f907e5cace AlsaSoundStream: Use an enum class for signifying ALSA thread state 2015-05-11 01:56:01 -04:00
Lioncash
353205132c AlsaSoundStream: Convert volatile variables to atomics 2015-05-11 01:55:59 -04:00
Lioncash
7b376abd3b Mixer: Convert volatile variables to atomics. 2015-05-11 01:55:50 -04:00
Lioncash
4920dbed13 AudioCommon: Migrate threadData to OpenALStream and AOSoundStream
This is only ever used in these two sound streams. Seems silly to have it as a class member. Converted it to an atomic as well.
2015-05-10 01:02:25 -04:00
Stevoisiak
78971b0840 (Visual Studio) Categorize SoundStream.h with other SoundStream files 2015-04-03 14:37:03 -04:00
Stevoisiak
93b16a4a2d Formatting/Whitespace Cleanup
Various fixes to formatting and whitespace
2015-02-25 10:48:21 -05:00
Markus Wick
e0b0ef3868 Revert "High quality resampler" 2015-02-23 18:43:13 +01:00
kamiyo
e864521182 High Quality Resampler, using FIR filter
For more information:
https://docs.google.com/document/d/1tBEgsJh7QiwNwepXI0eobfK3U8LkJButSyeuFt1degM/edit?usp=sharing

removed: SSE includes (not used)

added: 16bit -> float -> 16bit functions
added: linear interpolator and high-quality (windowed-sinc) interpolator functions (including Resampler class)
added: dithering

changed: renamed variables and reformatted a few things to fit with style guide (braces, #include->const)
changed: use s16, u16, s32, u32 etc
changed: store samples and do all computations as floats
changed: volume from 0 - 255
2015-02-18 21:13:45 -05:00
Scott Mansell
43dfec07c9 Cleanup DotProduct function to make it more readable. 2015-02-16 13:53:58 +13:00
Scott Mansell
7add7b685f Remove unneeded spaces from code.
Line now matches the style of the rest of the function.
2015-02-16 12:59:45 +13:00
magumagu
0f96a0104e Merge pull request #1752 from Buddybenj/clean-up
Clean Up
2015-02-10 11:39:14 -08:00
Benjamin Przybocki
4f324ad742 Clean Up 2015-01-24 17:10:21 -06:00
skidau
6e99accf06 Merge pull request #1917 from adamdmoss/no-lfe
Remove explicit subwoofer/LFE channel from Pulseaudio and OpenAL
2015-01-23 12:30:48 +11:00
Adam D. Moss
05d2bf6060 Audio: Drop the LFE/subwoofer channel from the decoded surround
DPL2Decode still doesn't decode 5.1 properly, leaving bass in all channels, but its 5.0 is pretty good, so leave it at that.
2015-01-19 10:24:44 +00:00
Stevoisiak
cb86db7b68 Minor consistency changes
Mostly small changes, like capitalization and spelling
2015-01-12 15:18:18 -05:00
skidau
f7f70f9039 Merge pull request #1847 from adamdmoss/openal-floatfix
OpenAL: Fix volume of sample conversion
2015-01-10 12:16:05 +11:00
skidau
530f894d87 Merge pull request #1845 from adamdmoss/lfe1
Audio: Fix subwoofer output in software 5.1 decoding
2015-01-09 11:59:29 +11:00
skidau
ac33423db5 Merge pull request #1835 from adamdmoss/master
Pulseaudio: Support 5-channel surround, optional in UI
2015-01-09 11:59:02 +11:00
Adam Moss
95c912310d PulseAudio: Support 5.1 surround, optional in UI 2015-01-08 11:10:34 +00:00
Adam Moss
b1c9f56acd Audio: Fix warning in DPL2 subwoofer change 2015-01-08 10:48:30 +00:00
skidau
25c6f6e6a1 Merge pull request #1782 from FL-dolphinemu/master
Issue 7968: Added keybinds for increasing, decreasing, and muting audio.
2015-01-08 14:09:18 +11:00
Adam Moss
2c892c7b68 OpenAL: Fix volume of sample conversion 2015-01-07 12:34:02 +00:00
Adam Moss
7580069dea Audio: Fuller subwoofer processing for software 5.1 decode
Code was only using front-left and front-right to calculate bass, but
HRTF code - which this was once based on - uses all five channels and
this sounds fuller.
2015-01-07 11:58:02 +00:00
Adam Moss
f324f3f68f Audio: Fix subwoofer output in software 5.1 decoding
The FIR filter was only using the first sample of each input packet.
2015-01-07 10:24:25 +00:00
Tillmann Karras
6bcdb10eee CMake: simplify some expressions 2015-01-03 13:17:57 +01:00
FL.dolphinemu
78f8bf7423 Issue 7968: Added keybinds for increasing, decreasing, and muting audio. 2014-12-28 22:03:21 +01:00
comex
b36b55cfcb Upgrade AudioUnit API usage.
weird that such a simple change doesn't seem to have any obvious
documentation on Apple's website or elsewhere...
2014-11-25 00:42:21 -05:00
comex
aae234c5d7 Fix name conflict between SoundTouch BOOL and ObjC BOOL. 2014-11-25 00:27:13 -05:00
Stevoisiak
b25e1a2eb4 Various formatting and consistency fixes 2014-11-13 22:42:18 -05:00
Ryan Houdek
5204acd5ee Fixes OpenSLES's sample rate.
I was statically setting the sample rate to 44.1Khz when we default to run at 48Khz.
This was causing audio to sound much too low.
2014-10-23 11:29:49 -05:00
Ryan Houdek
73512ad38f Fix a race condition in our OpenSL ES audio backend.
After calling enqueue the callback would fire before we had assigned g_mixer a value.
This would cause a fun crash to happen.
2014-10-18 08:32:14 -05:00
skidau
0d1f8527c7 Merge pull request #1297 from RisingFog/audio-dump-during-emulation
Start/Stop Audio Dump During Emulation
2014-10-18 13:16:41 +11:00
Fog
108087bb68 Flipped Wave File Channels
This change was done because with the previous method of dumping audio, the mixer would handle switching the RL being emitted by the DSP to LR, and thus would provide the proper channel orientation. Because we're now dumping directly from PushSamples() and PushStreamingSamples(), it was writing the right channel to the left channel of the wave file and vice versa.
2014-10-15 23:16:48 -04:00
Fog
f2ed533841 Start/Stop Audio Dump During Emulation 2014-10-15 20:50:38 -04:00
Fog
fc4125cdd1 Proper Audio/Video Dumping 2014-10-09 00:06:04 -04:00
Lioncash
7f7fb5e70c AudioCommon: Prefix soundStream global with g_ 2014-09-30 03:06:16 -04:00
Rohit Nirmal
46057db37d Fix build failing when disabling precompiled headers. 2014-09-19 18:17:51 -04:00
Ryan Houdek
71cb09f1ca Merge pull request #1027 from rohit-n/change-include
Include CommonTypes.h instead of Common.h.
2014-09-10 00:35:16 -05:00
Rachel Bryk
f93aa7087c Kill Core::g_CoreStartupParameter. 2014-09-09 00:24:49 -04:00
Rohit Nirmal
fbc64984ca Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
Lioncash
789a500ddc AudioCommon: Remove unnecessary usages of mem_fn 2014-09-08 13:41:02 -04:00
skidau
8abe9622fd Route the wiimote speaker to the sound mixer (the host system's speakers). Emulated Wiimote speaker sounds will go to the host system's speakers. Real Wiimotes will continue to use their own speaker for Wiimote speaker sounds. All Wiimote speaker sound can be disabled by unchecking the "Enable Speaker Data" option.
Each emulated Wiimote can have its speaker routed from left to right via the "Speaker Pan" setting in the emulated wiimote settings dialog.  Use any value from -127 for leftmost to 127 for rightmost with 0 being the centre.

Added code in the InputConfig to use a spin control for non-boolean values.

Defaulted the setting of "Enable Speaker Data" to disabled.
2014-09-07 14:16:20 +10:00
skidau
3caab10df8 Hooked up the emulated Wiimote speaker.
The Wiimotes are positioned as follows:
Wiimote 0 = Center
Wiimote 1 = Left
Wiimote 2 = Right
Wiimote 3 = Center

The Wiimote speaker output can be disabled via the "Enable Speaker Data" checkbox in the Wiimote settings.
2014-09-07 14:16:20 +10:00
Lioncash
daddc3317e AudioCommon: Use std::string for the filename parameter of StartLogAudio 2014-09-06 23:26:08 -04:00
Lioncash
27cecf46a8 AudioCommon: Make WaveFileWriter inherit NonCopyable 2014-09-06 11:27:36 -04:00
Lioncash
019ef844d4 AudioCommon: Remove unused parameter from OpenSLESStream constructor 2014-09-06 01:42:56 -04:00
Lioncash
e10b0d1008 Merge pull request #930 from skidau/openal-seq-ms
Removed the auto setting of SEQUENCE_MS because the synchronised audio c...
2014-09-02 09:56:46 -04:00
Shawn Hoffman
266992684d msvc: remove some remnants of SDL and DSound from projects and general cleanup. 2014-09-01 21:27:44 -07:00
skid
c2d7801ceb Removed the auto setting of SEQUENCE_MS because the synchronised audio code has made it unnecessary. 2014-09-01 20:28:29 +10:00
Lioncash
377a1c8f20 AudioCommon: Get rid of now unused handle param for InitSoundStream() 2014-08-30 23:36:00 -04:00
Lioncash
2f7df4a803 AudioCommon: Declare iterator variable in loop body in DPL2Decoder 2014-08-30 21:10:18 -04:00
Lioncash
f94e764df5 AudioCommon: Clean up brace placements 2014-08-30 18:06:42 -04:00
Shawn Hoffman
af2405eefd Remove dsound audio backend.
There isn't any reason to use dsound over xaudio.
2014-08-23 11:19:19 -07:00
Shawn Hoffman
1332805bb6 Add headers required by XAudio2_7 to externals.
This makes all builds' audio compatible with downlevel Windows and removes
the need for developers to install the June 2010 DirectX SDK.
2014-08-23 11:03:07 -07:00