Commit Graph

101 Commits

Author SHA1 Message Date
Huw Pascoe a13ab958cb Fixed type conversion ambiguity 2017-09-30 09:34:35 +01:00
Subv d7459354f5 Audio: Use std::deque instead of std::vector for the audio buffer type (StereoBuffer16).
The current code inserts and deletes elements from the beginning of the audio buffer, which is very inefficient in an std::vector.

Profiling was done using VisualStudio2017's Performance Analyzer in Super Mario 3D Land.

Before this change: AudioInterp::Linear had 14.14% of the runtime (inclusive) and most of that time was spent in std::vector's insert implementation.
After this change: AudioInterp::Linear has 0.36% of the runtime (inclusive)
2017-09-25 18:31:37 -05:00
MerryMage 933508e2a2 interpolate: Interpolate on a frame-by-frame basis 2017-08-28 10:54:41 +01:00
Yuri Kunde Schlesner 74afcd5328 CMake: Add SoundTouch include path to target property 2017-05-27 22:09:28 -07:00
Yuri Kunde Schlesner 776cb91785 CMake: Define an interface target for SDL2 definitions 2017-05-27 21:38:49 -07:00
Yuri Kunde Schlesner 7b81903756 CMake: Correct inter-module dependencies and library visibility
Modules didn't correctly define their dependencies before, which relied
on the frontends implicitly including every module for linking to
succeed.

Also changed every target_link_libraries call to specify visibility of
dependencies to avoid leaking definitions to dependents when not
necessary.
2017-05-27 18:41:24 -07:00
Yuri Kunde Schlesner b4a93cfdde DSP: Create backing memory for entire DSP RAM
Also move address space mapping out of video_core.
2017-05-09 21:44:00 -07:00
Mat M 0cb52ee74a Doxygen: Amend minor issues (#2593)
Corrects a few issues with regards to Doxygen documentation, for example:

- Incorrect parameter referencing.
- Missing @param tags.
- Typos in @param tags.

and a few minor other issues.
2017-02-26 17:58:51 -08:00
Jake Merdich ff28080091 Support looping HLE audio (#2422)
* Support looping HLE audio
* DSP: Fix dirty bit clears, handle nonmonotonically incrementing IDs
* DSP: Add start offset support
2017-01-29 23:52:25 -08:00
noah the goodra 3545b144f1 fixed the override warning
```
In file included from citra/src/audio_core/sink_details.cpp:11:
citra/src/./audio_core/sdl2_sink.h:25:10: warning: 'SetDevice' overrides a member function but is not marked 'override' [-Winconsistent-missing-override]
    void SetDevice(int device_id);
         ^
citra/src/./audio_core/sink.h:39:18: note: overridden virtual function is here
    virtual void SetDevice(int device_id) = 0;
                 ^
```
2017-01-27 14:24:14 -06:00
Kloen Lansfiel f852369986 SDL: Select audio device (#2403)
* Initial Commit

Added Device logic to Sinks
Started on UI for selecting devices

Removed redundant import

* Audio Core: Complete Device Switching

Complete the device switching implementation by allowing the output
device to be loaded, changed and saved through the configurations menu.

Worked with the Sink abstraction and tuned the "Device Selection"
configuration so that the Device List is automatically populated when
the Sink is changed.
This hopefully addresses the concerns and recommendations mentioned in
the comments of the PR.

* Clean original implementation.

* Refactor GetSinkDetails
2017-01-25 22:33:26 -05:00
Lioncash efcab1e918 time_stretch: Add missing #pragma once directive 2016-12-12 19:16:46 -05:00
Lioncash 963aedd8cc Add all services to the Service namespace
Previously there was a split where some of the services were in the
Service namespace and others were not.
2016-12-11 00:07:27 +00:00
MerryMage cef0f5b5a7 audio_core: SelectSink should default to auto if sink_id is invalid 2016-12-10 01:26:22 +00:00
freiro 5dd31f204a Improve verbosity of audio errors with SDL_GetError() 2016-11-22 17:28:11 +01:00
Ricardo de Almeida Gonzaga 13d46f6820 Fix typos 2016-10-20 12:26:59 -02:00
Yuri Kunde Schlesner 84fbbe2629 Use negative priorities to avoid special-casing the self-include 2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot ebdae19fd2 Remove empty newlines in #include blocks.
This makes clang-format useful on those.

Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Yuri Kunde Schlesner 396a8d91a4 Manually tweak source formatting and then re-run clang-format 2016-09-18 21:14:25 -07:00
Emmanuel Gil Peyrot dc8479928c Sources: Run clang-format on everything. 2016-09-18 09:38:01 +09:00
MerryMage 991cdda3fc audio_core: Tweak audio latency 2016-09-07 15:27:32 +01:00
fincs 0bbda3bab4 codec: Fix ADPCM distortion caused by incorrect nibble order
Closes #2049.

Signed-off-by: MerryMage <MerryMage@users.noreply.github.com>
2016-09-03 14:06:25 +01:00
MerryMage 904a319694 audio_core: Add EnableStretching to interface so that one can toggle stretching on and off 2016-08-31 16:56:30 +01:00
MerryMage 0ef4185644 sink: Change EnqueueSamples to take a pointer to a buffer instead of a std::vector 2016-08-31 16:55:10 +01:00
MerryMage f4d364a60e DSP/HLE: Audio output 2016-05-19 07:25:26 +01:00
MerryMage 6542c60602 DSP/HLE: Implement mixer processing 2016-05-19 07:24:39 +01:00
Maribel 6f6af6928f AudioCore: Implement time stretcher (#1737)
* AudioCore: Implement time stretcher

* fixup! AudioCore: Implement time stretcher

* fixup! fixup! AudioCore: Implement time stretcher

* fixup! fixup! fixup! AudioCore: Implement time stretcher

* fixup! fixup! fixup! fixup! AudioCore: Implement time stretcher

* fixup! fixup! fixup! fixup! fixup! AudioCore: Implement time stretcher
2016-05-14 22:04:03 -04:00
Lioncash da2400a601 source: Fix missing logging arguments
Silences two warnings on OSX.
2016-05-09 09:41:03 -04:00
Alexander Laties 0a31e373f1 fixup simple type conversions where possible 2016-05-07 11:41:55 -04:00
bunnei c549c36076 Merge pull request #1736 from MerryMage/sdl2-sink
AudioCore: SDL2 Sink
2016-05-07 11:08:13 -04:00
MerryMage 920d2cf41d AudioCore: SDL2 Sink 2016-05-07 11:32:48 +01:00
bunnei 1a6cd7eb4b HLE: Fix recent DSP change for Visual Studio. 2016-05-07 00:54:31 -04:00
MerryMage b242bdf945 DSP/HLE: Implement Source processing 2016-05-03 20:58:28 +01:00
MerryMage 4e971f44a2 Audio: Add sink selection to configuration files 2016-04-30 07:41:02 +01:00
MerryMage 8b94422e3e AudioCore: List of sink types 2016-04-30 07:39:48 +01:00
MerryMage 7d106eff10 AudioCore: Implement NullSink 2016-04-30 07:39:37 +01:00
bunnei 73624b4721 Merge pull request #1726 from MerryMage/read-write-region
AudioCore: CurrentRegion() -> ReadRegion(), WriteRegion()
2016-04-29 12:18:26 -04:00
MerryMage 22995bd9bf AudioCore: CurrentRegion() -> ReadRegion(), WriteRegion() 2016-04-29 16:32:29 +01:00
bunnei 4c235955cf Merge pull request #1723 from MerryMage/audio-interp
AudioCore: Implement interpolation
2016-04-29 10:43:20 -04:00
MerryMage 111275bfbd AudioCore: Implement interpolation 2016-04-29 08:05:41 +01:00
bunnei fda578e19d Merge pull request #1727 from MerryMage/minor-commit
AudioCore: Move samples_per_frame and num_sources into hle/common.h
2016-04-28 09:47:08 -04:00
bunnei 2f76dc6758 Merge pull request #1722 from MerryMage/soundtouch
Externals: Add soundtouch
2016-04-28 09:45:15 -04:00
MerryMage 27ce3b3f51 Externals: Add soundtouch 2016-04-28 13:33:14 +01:00
MerryMage dda9ffe790 AudioCore: Move samples_per_frame and num_sources into hle/common.h 2016-04-28 11:22:40 +01:00
MerryMage a47f149e07 AudioCore: Hack to prevent regressions: Trigger Binary pipe interrupt every audio frame 2016-04-27 06:35:10 +01:00
MerryMage ff6db69c60 DSP_DSP: Updated interrupt implementation 2016-04-27 06:35:06 +01:00
MerryMage 555907ce8d DSP/Pipe: There are 8 pipes 2016-04-25 07:50:53 +01:00
MerryMage 2a99464ef1 DSP: Implement audio filters (simple, biquad) 2016-03-28 15:51:00 +01:00
MerryMage efd1c3f8c3 DSP: Implement audio codecs (PCM8, PCM16, ADPCM) 2016-03-24 03:46:59 +00:00
MerryMage 004991d79e DSP: Implement Pipe 2
Pipe 2 is a DSP pipe that is used to initialize both the DSP hardware (the
application signals to the DSP to initialize) and the application (the DSP
provides the memory location of structures in the shared memory region).
2016-03-06 21:25:44 +00:00
MerryMage 8b00954ec7 AudioCore: Skeleton Implementation
This commit:
* Adds a new subproject, audio_core.
* Defines structures that exist in DSP shared memory.
* Hooks up various other parts of the emulator into audio core.

This sets the foundation for a later HLE DSP implementation.
2016-02-21 13:13:52 +00:00