Commit Graph

356 Commits

Author SHA1 Message Date
Tillmann Karras f28116b7da clang-modernize -add-override 2014-03-09 21:12:01 +01:00
Tillmann Karras c89f04a7c5 clang-modernize -loop-convert
and some manual adjustments
2014-03-09 21:11:59 +01:00
Tillmann Karras 315a8ba1c0 Various changes suggested by cppcheck
- remove unused variables
- reduce the scope where it makes sense
- correct limits (did you know that strcat()'s last parameter does not
  include the \0 that is always added?)
- set some free()'d pointers to NULL
2014-02-28 12:43:20 +01:00
Tillmann Karras 6914eca167 Fix various warnings reported by clang
- mostly remove unused variables
- rename some generic JIT identifiers
2014-02-28 12:28:19 +01:00
Pierre Bourdon fca12c4c4e Fix more header sorting issues in AudioCommon/ (now check-includes clean). 2014-02-20 01:01:10 +01:00
Lioncash 2afe215271 Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
Lioncash 3fd87a7636 Second and final pass of clearing out tabs. 2014-02-17 02:19:41 -05:00
Lioncash 6c4ee1753a Fix some vertical alignments
ie. uses spaces for alignment.
2014-02-16 20:12:05 -05:00
degasus 9e56b1d343 Disable framerate correction for OpenAL
OpenAL itself stretch the time on slowdowns, so the Mixer isn't allowed also to change the rate.
2014-02-13 13:22:29 +01:00
degasus bbd58b8f6a change AI sampling rate based on framelimit 2014-02-11 14:53:53 +01:00
degasus ca9fd64df9 controll the interpolation frac by the fifo size 2014-02-11 14:35:19 +01:00
degasus d20dbbc92f audiocommon: sync mixer by fifo instead of estimate values 2014-02-11 07:25:58 +01:00
degasus 2956ffa5be audiocommon: remove 1:1 interpolation
The usual one is 32->48 khz interpolation. So there is no need in a special 1:1 interpolation only for performance.
2014-02-11 07:25:58 +01:00
lioncash d2038049f5 Replace all include guard ifdefs with "#pragma once" 2014-02-10 18:07:16 -05:00
degasus ab124b96c4 Atomic Stores / Loads 2014-02-07 00:20:10 +01:00
degasus 5c646d334a Pulseaudio: rewrite the pa backend with the async api
The default async api allow us to set some latency options. The old one (simple API) was the lazy way to go for usual audio where latency doesn't matter.

This also streams audio, so it should be a bit faster then the old one.
2014-02-07 00:20:10 +01:00
Lioncash 249b00c469 Change the modified parameter in the Clamp function to be a pointer.
Makes it easier to identify the one being modified.
2014-02-05 04:04:35 -05:00
Lioncash 6b87a0ef20 Introduce a generic clamp function to clean up some similarly duplicated code. 2014-02-04 20:43:07 -05:00
Jasper St. Pierre 34692ab826 Remove unnecessary Src/ folders 2013-12-31 14:03:19 -05:00
Jasper St. Pierre 43e618682e Convert all vcxproj files to UNIX line endings 2013-12-31 14:03:18 -05:00
Lioncash e0aa674c72 Minor const-correctness for some functions in FifoPlayer and some AudioCommon headers. 2013-12-11 08:43:58 -05:00
Shawn Hoffman 33d56f50a4 Re-plumb window handle to the dsound backend.
Reverts parts of commit 71c01d83ab614b9e0c421d03ca694713dbabff48.
Fixes issue 6800
2013-11-07 09:24:56 -08:00
comex c579637eaf Run code through the advanced tool 'sed' to remove trailing whitespace. 2013-11-03 20:54:05 -05:00
comex 965b32be9c Run code through clang-modernize -loop-convert to create range-based for loops, and manually fix some stuff up. 2013-11-03 20:54:01 -05:00
Shawn Hoffman ccd30024b3 Update to VS2013 and a slew of build-related updates. Notes:
* Currently there is no DEBUGFAST configuration. Defining DEBUGFAST as a preprocessor definition in Base.props (or a global header) enables it for now, pending a better method. This was done to make managing the build harder to screw up. However it may not even be an issue anymore with the new .props usage.
* D3DX11SaveTextureToFile usage is dropped and not replaced.
* If you have $(DXSDK_DIR) in your global property sheets (Microsoft.Cpp.$(PlatformName).user), you need to remove it. The build will error out with a message if it's configured incorrectly.
* If you are on Windows 8 or above, you no longer need the June 2010 DirectX SDK installed to build dolphin. If you are in this situation, it is still required if you want your built binaries to be able to use XAudio2 and XInput on previous Windows versions.
* GLew updated to 1.10.0
* compiler switches added: /volatile:iso, /d2Zi+
* LTCG available via msbuild property: DolphinRelease
* SDL updated to 2.0.0
* All Externals (excl. OpenAL and SDL) are built from source.
* Now uses STL version of std::{mutex,condition_variable,thread}
* Now uses Build as root directory for *all* intermediate files
* Binary directory is populated as post-build msbuild action
* .gitignore is simplified
* UnitTests project is no longer compiled
2013-10-26 17:55:38 -07:00
Lioncash 1f0710caf7 Remove some more includes. 2013-10-19 19:59:03 -04:00
Lioncash 97cd42f5c3 Remove some unnecessary includes as well as simplifying exisiting ones if possible. 2013-10-19 19:58:56 -04:00
comex de1773affb Basic precompiled header support for Linux/OS X. Shaves 20-30% off full rebuild time on my system. 2013-10-17 00:07:35 -04:00
Lioncash f3af8ee0f0 Revert "Remove some unnecessary includes."
Turns out this explodes on Linux.

This reverts commit c4696568cc.
2013-10-14 04:05:38 -04:00
Lioncash c4696568cc Remove some unnecessary includes. 2013-10-14 04:01:57 -04:00
comex fd7cf5bb71 A bunch of trivial changes to fix clang warnings. 2013-09-01 22:58:33 -04:00
degasus a1822a3aca fix AudioCommon::Mixer Buffer indices
This fix the 1h32 audio bug which outputs static sound after 1h32.

The mixer is used for 32->48kHz resampling and as output buffer for the async audio backends.
So this buffer was indiced by a writing and a reading pointer and the count of samples in it.
As this is redundant and the sample count isn't accurate calculateable because of the interpolation,
both indices gets out of sync. So after some time (~92min), this buffer overflows and return only garbage.

thx @ moosehunter + delroth for debugging on this issue. You did the most work :-)
2013-07-11 21:22:38 +02:00
Ryan Houdek 7d6b36bf73 Fix most ARM warnings 2013-07-05 19:56:15 -05:00
Ryan Houdek eb579e4264 Merge in JP's change to fix audio stuttering with OpenAL. 2013-06-23 02:46:45 -05:00
Jordan Cristiano 8cf515359c fixed uninitialzed audio_size variable in WaveFileWriter 2013-06-22 23:24:05 -04:00
Jordan Cristiano fafdc4fcef DSBCAPS_GLOBALFOCUS allows sound to still play when the application is in the background. Other backends do this, so why not let dsound do it too. 2013-06-22 23:23:53 -04:00
Jordan Cristiano 911d73d85a added new license header to missed audio source files 2013-06-22 23:20:48 -04:00
John Peterson 5bd44d7e3f Build fix 2013-06-13 18:38:05 +02:00
John Peterson adb83cfabe Clarifying the OpenAL loop
because it isn't as clear as it can be
2013-06-13 18:04:02 +02:00
lioncash d244bca1f5 Fix a bunch of random typos in comments and logging.
Also update the comment headers for two functions in GCMemcard.cpp.
2013-04-19 09:21:45 -04:00
Lioncash bab9963b00 New license header introduced for DiscIO, AudioCommon, InputCommon, VideoCommon, and Common projects. 2013-04-17 23:09:55 -04:00
lioncash ef85b9af45 Update the license file text (change SVN to Git) in all projects except Core since I was told a merge was happening soon. So for the sake of the merge going smoothly, I'll fix that when I remove the tab/space mismatches from the Core project.
Also, some tab/space mismatches removed from VideoOGL, and some places I missed in VideoDX[number] projects.

Now, the Core is literally the only project with tab/space mismatches (on a large scale).
2013-04-15 16:28:55 -04:00
Lioncash 58159a1693 Some more logging typos and clarifications. Missed these in my last commit.
This commit mainly elaborates on some messages a little more. Also fixes some typos that slipped through the last commit.

A large change in text can be seen in EXI_DeviceMemoryCard.cpp. I added more info as to why a write to a memory card may fail. (This actually was a reason I was unable to write to a memcard recently).

Elaborations can be seen in WGL.cpp

I did change some comments in some files that I was correcting logging messages in, however this is only if I spot a typo or if an abbreviation is lower-cased. Even in that case, the amount of changes done to comments is very minimal.
2013-04-01 00:10:54 -04:00
Lioncash f432d6038e Fix some typos and correct some capitalizations in the log messages.
Makes the logging look more orderly and less spammy when spitting out things.
2013-03-31 19:13:30 -04:00
lioncash edd9d0e0ef Clean up more space/tab mismatches in AudioCommon, Common, and VideoCommon.
Not planning to touch Core since it's the most actively changed part of the project.
2013-03-19 21:51:12 -04:00
Ryan Houdek 717b976875 ARM Support without GLSL 2013-02-26 13:49:00 -06:00
skidau 718a1b5ded Fixed a buffer overflow in the OpenAL buffer. 2013-02-19 23:18:13 +11:00
Glenn Rice 0ffdd2607f Fix the majority of the compiler warnings unearthed by the addition of
the new warning flags.
2013-01-29 23:24:51 -06:00
Lioncash fe7e691d77 Revert "mem_fun -> mem_fn."
This reverts commit b7d32b0a3d.

OSX C++ std library in charge of holding back progress (as usual).
2013-01-23 23:38:49 -05:00
Lioncash b7d32b0a3d mem_fun -> mem_fn.
mem_fun is deprecated in C++11. Also it does everything mem_fun can do, but more conveniently.
2013-01-23 23:29:50 -05:00
Lioncash c4bd6329c0 Fully fix that clear bug in aldlist.cpp. Seems I missed part. Corrected it. 2013-01-18 23:42:37 -05:00
Rachel Bryk 196c2867ad Move DSP settings to dolphin.ini 2013-01-16 20:17:44 -05:00
lioncash 1cf7cbb936 Fix a clear bug in aldlist.cpp.
Properly clears itself now.
2013-01-15 12:47:13 -05:00
skidau 7402a89e6e OSX build fix 2013-01-16 00:14:31 +11:00
skidau a9388ce2e2 Added backwards compatibility with old OpenAL drivers. 2013-01-16 00:10:49 +11:00
skidau 799b032b98 Readd the OpenAL option.
The OpenAL backend requires OpenAL Soft to be installed: http://kcat.strangesoft.net/openal.html

You may need to rename soft_oal.dll to OpenAL32.dll in the Dolphin folder.

Windows users may also need to update their OpenAL drivers by downloading them from

http://connect.creativelabs.com/openal/Downloads/oalinst.zip
2013-01-15 23:14:11 +11:00
skidau 0a4272c96b Merge branch 'OpenAL'
* OpenAL:
  Changed SoundTouch to use float samples, allowing SSE to be used. Made the DPL2 decoder disabled by default. Re-added the audio hack used by the Accurate VBeam emulation option.
  Added a latency setting to the audio settings. Removed the Sample Rate setting.  It is now hardcoded to 48000hz (accurate audio timing).
  Skipped timestretching if the emulator is running below 10% speed to prevent buffer overflows.
  Removed the synchronisation between the CPU thread and the audio thread. Added code to detect and resume from buffer underruns. Disabled the ability to change the DPL2 option after the game has started. Fixed a memory leak that occurred in the DPL2 decoder. Fixed the OSX build.
  Build fix
  Added a Dolby Pro Logic II (DPL2) decoder in the OpenAL backend.  DPL2 audio is decoded to 5.1.  Code adapted from ffdshow. Added an option in the DSP settings to disable the DPL2 decoder in case Dolphin incorrectly detects a 5.1 audio system. Updated the OpenAL files to OpenAL Soft 1.15.1 in the Windows build.
  Removed the system timing hack which was activated when the Accurate VBeam option was enabled.
  Fixed the include directories in Audio Common for the Windows 32bit build.
  Fixed the include directories in Audio Common for the Windows build.
  Messed up the static include line
  Fix include paths and compiling in Linux. Externals soundtouch is 1.7.1, while Ubuntu 12.10 is 1.6.x. Externals soundtouch is compiled with integer samples, while ubuntu is compiled with float samples. Float samples is probably the more common route. If you're going to use soundtouch, you should probably use SAMPLETYPE instead of explicitly choosing short. This probably breaks the windows build since its includes aren't setup.
  OSX: typedef signed char BOOL
  OSX build fix
  Build fix
  Added audio time stretching by using the SoundTouch library.
  Implemented correct audio timing.
  OpenAL for Windows initial commit
2013-01-15 22:40:12 +11:00
skidau 6d4a566bc4 Changed SoundTouch to use float samples, allowing SSE to be used.
Made the DPL2 decoder disabled by default.
Re-added the audio hack used by the Accurate VBeam emulation option.
2013-01-15 22:29:26 +11:00
Jordan Woyak 020ab743a9 re-enable PulseAudio backend 2013-01-13 22:22:06 -06:00
Jordan Woyak 13469f2db4 Merge branch 'pulseaudio-simple' 2013-01-13 21:36:26 -06:00
skidau 1c462a1eca Added a latency setting to the audio settings.
Removed the Sample Rate setting.  It is now hardcoded to 48000hz (accurate audio timing).

Fixes issue 5672.
2013-01-13 00:05:30 +11:00
Lioncash dcc216a027 'count' parameter for AddStereoSamples and AddStereoSamplesBE in WaveFile should be unsigned. Doesn't make sense to have them signed. 2013-01-11 22:22:55 -05:00
skidau 73140c7da7 Skipped timestretching if the emulator is running below 10% speed to prevent buffer overflows. 2013-01-11 23:06:20 +11:00
skidau 3632ce6df5 Removed the synchronisation between the CPU thread and the audio thread.
Added code to detect and resume from buffer underruns.
Disabled the ability to change the DPL2 option after the game has started.
Fixed a memory leak that occurred in the DPL2 decoder.
Fixed the OSX build.
2013-01-11 19:42:03 +11:00
skidau ed5a68a504 Build fix 2013-01-11 14:20:22 +11:00
skidau 80f4475e76 Added a Dolby Pro Logic II (DPL2) decoder in the OpenAL backend. DPL2 audio is decoded to 5.1. Code adapted from ffdshow.
Added an option in the DSP settings to disable the DPL2 decoder in case Dolphin incorrectly detects a 5.1 audio system.
Updated the OpenAL files to OpenAL Soft 1.15.1 in the Windows build.

Fixes issue 3023.
2013-01-11 14:03:09 +11:00
Jordan Woyak 202c005e61 Remove commented code. No longer supporting setting volume with PulseAudio. 2013-01-10 13:01:22 -06:00
Pierre Bourdon 2c1c538fda Disable the OpenAL and Pulseaudio audio backends
They are currently broken and cause sound issues which are not present in other
backends:

* OpenAL plays music 2x too fast in Zelda UCode games with HLE
* Pulse backend uses a lot of CPU power and slows down emulation significantly

Both backends are currently being re-implemented in separate branches of
Dolphin, so this should be a temporary removal.
2013-01-10 18:43:15 +01:00
Jordan Woyak 5c371549d3 fix cmake hacks 2013-01-09 18:39:28 -06:00
Jordan Woyak 488a679ca7 use pulseaudio "simple" api 2013-01-09 17:45:16 -06:00
skidau ad28986d51 Fixed the include directories in Audio Common for the Windows 32bit build. 2013-01-10 07:55:13 +11:00
skidau d34c847edd Fixed the include directories in Audio Common for the Windows build. 2013-01-10 07:43:59 +11:00
Ryan Houdek 01f4d9f386 Fix include paths and compiling in Linux. Externals soundtouch is 1.7.1, while Ubuntu 12.10 is 1.6.x. Externals soundtouch is compiled with integer samples, while ubuntu is compiled with float samples. Float samples is probably the more common route. If you're going to use soundtouch, you should probably use SAMPLETYPE instead of explicitly choosing short. This probably breaks the windows build since its includes aren't setup. 2013-01-09 10:26:12 -06:00
skidau 8494a439c7 OSX build fix 2013-01-10 00:06:35 +11:00
skidau 91fe5cc821 Build fix
Added SoundTouch as a dependency of AudioCommon.
Removed the "soundtouch_config.h" include on Linux and OSX.
2013-01-09 23:45:13 +11:00
skidau 63b38be97c Added audio time stretching by using the SoundTouch library. 2013-01-09 22:57:32 +11:00
skidau c8c78e0aa9 Implemented correct audio timing.
Fixes issue 5493.
2013-01-07 15:37:08 +11:00
skidau 6df1dacca8 OpenAL for Windows initial commit 2013-01-07 12:16:04 +11:00
Ryan Houdek 88b890824b (CoreAudio) Retain volume value until initialization. Makes volume slider work when game isn't running. Fixes issue 5383. 2012-12-14 12:15:01 -06:00
Glenn Rice e85438cba0 Clean up gcc/g++ compiler warnings that have accumulated. 2012-12-10 00:40:28 -06:00
rog 9070e7ff8c misc movie cleanup and fixes 2012-10-20 22:26:40 -04:00
skidau c57640dfbd Implemented proper timing in the "No audio output" back-end. 2012-07-01 17:07:58 +10:00
nitsuja a81631b58e made savestates synchronous and immediate. this allows saving or loading while the emulator is paused, fixes issues where savestate hotkeys would get ignored if pressed too close together, might speed up savestates in some cases, and hopefully makes savestates more stable too.
the intent is to replace the haphazard scheduling and finger-crossing associated with saving/loading with the correct and minimal necessary wait for each thread to reach a known safe location before commencing the savestate operation, and for any already-paused components to not need to be resumed to do so.
2012-05-26 13:09:38 +10:00
skidau 5ceef0c513 Removed the DTK Music option. It is now always enabled. 2012-04-23 05:02:43 +10:00
Shawn Hoffman 56b1373baf Remove scons-related files 2012-03-25 12:55:02 -07:00
Shawn Hoffman c5d746f3d8 remove scons files from VS projects 2012-03-18 06:41:12 -07:00
nitsuja 6f1b2d7748 name all audio threads (that I know how to) for debugging, as suggested in response to revision d00b719966. 2012-01-01 14:28:19 -08:00
skidau ba545ec1e9 Build fix 2012-01-01 18:09:39 +11:00
skidau c53593a40a Moved the Audio Throttle option to the Framelimit drop-down. The Audio Throttle should never be used alongside the frame limiter as that can cause audio sync issues. 2012-01-01 14:32:54 +11:00
nitsuja d00b719966 give the audio thread a name (this doesn't really matter, but it was bugging me) 2011-12-18 02:25:50 -08:00
Maarten ter Huurne 958891b4eb Compile with OpenAL support on OS X. 2011-12-05 05:49:08 +01:00
Shawn Hoffman 95517a9741 vs2010: Disable LTCG for realz 2011-09-05 09:43:23 -07:00
smelenchuk 2bc3965c31 Since LLE can now output at 48kHz, adjust the audio dumper so that it will respect the set sample rate for LLE as well as HLE. This fixes audio dumping for LLE at 48kHz.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7567 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-05-28 23:32:11 +00:00
Marko Pusljar ff63ef20c2 Trying to fix mixer problem when AIsrc is @48kHz, should fix games like All Star Baseball 2004/
XGRA Extreme-G Racing Association/Conduit 2... Enabled 48kHz output for LLE (before it was just 32kHz). I hope it works, if there are serious problems, it will be reverted.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7511 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-05-05 14:53:00 +00:00
Jordan Woyak f8620fcd0b Fixed some memory leaks. Only one was mine ;P
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7392 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-22 07:27:23 +00:00
Glenn Rice 52cb7fd4ca Fix and issue with the escape button closing the hotkey dialog when trying to set a hotkey to escape.
Fix a few more dialogs to close with escape.
Fix an issue with the pulse audio sound backend when the dsp emulation method is changed, and the frequency setting was not respected.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7358 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-16 12:59:05 +00:00
Jordan Woyak 41c98f982e A bit of cleanup to Core Init/Stop, Frame, and Main. Cleanup XAudio2 to attempt to fix the crash on stop(didn't help :p). For some reason CFrame::DoStop is called twice.(might be the issue)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7353 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-15 23:09:12 +00:00
pierre 37e31f2df6 AudioCommon: Improve pad silence when ppc does not keep up with realtime
Uses the last sample from the ppc buffer to fill the samples the ppc
didn't deliver data for, avoids clicking on underruns.


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7338 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-12 22:02:46 +00:00
Jordan Woyak 59fd1008ca Wrapped fopen/close/read/write functions inside a simple "IOFile" class. Reading, writing, and error checking became simpler in most cases. It should be near impossible to forget to close a file now that the destructor takes care of it. (I hope this fixes Issue 3635) I have tested the functionality of most things, but it is possible I broke something. :p
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7328 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-11 10:21:46 +00:00
Jordan Woyak 423018f811 Replaced Common::CriticalSection with a std::mutex implementation. 64bit Windows builds now use SRWLocks and ConditionVariables(requires Vista/7, x64 builds will no longer work on Windows XP x64). Tell me if you hate that. Removed Common::EventEx. Common::Event now uses a std::condition_variable impl.(using ConditionVariables on Windows x64, Events on x86, or posix condition variables elsewhere). I experience slight speed improvements with these changes.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7294 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-03-05 06:11:26 +00:00