Commit graph

90 commits

Author SHA1 Message Date
bunnei
e228fcd133 Merge pull request #1298 from lioncash/view
audio_core/sink_details: Change std::string parameter into std::string_view
2018-09-12 18:24:57 -04:00
bunnei
f5b02a99e7 Merge pull request #1163 from FearlessTobi/add-audio-stretching
audio_core: Add audio stretching support
2018-09-12 18:23:54 -04:00
MerryMage
9ffbfeee26 audio_core: Flush stream when not playing anything 2018-09-12 18:09:14 +01:00
Lioncash
93e3030d0c audio_core/sink_details: Change std::string parameter into std::string_view
The given string is only ever used for lookup and comparison, so we can
just utilize a non-owning view to string data here
2018-09-11 21:36:12 -04:00
MerryMage
84b7a67ef1 cubeb_sink: Downsample arbitrary number of channels 2018-09-09 09:51:46 +01:00
MerryMage
d7d7fec6c7 cubeb_sink: Perform audio stretching 2018-09-08 18:56:38 +01:00
MerryMage
4e439efbf6 audio_core: Add audio stretcher 2018-09-08 18:56:38 +01:00
MerryMage
722441ef0b cubeb_sink: Hold last available value instead of writing zeros
This reduces clicking in output audio should we underrun.
2018-09-08 18:56:38 +01:00
MerryMage
d99dceeb7a cubeb_sink: Use RingBuffer 2018-09-08 18:56:38 +01:00
fearlessTobi
7377afca3a Add audio stretching support 2018-09-08 18:26:23 +01:00
MerryMage
ed0dc20280 audio_renderer: Rename AudioOut instance to audio_out 2018-09-08 16:50:12 +01:00
Markus Wick
71250d28d6 Update microprofile scopes.
Blame the subsystems which deserve the blame :)

The updated list is not complete, just the ones I've spotted on random sampling the stack trace.
2018-09-04 11:04:26 +02:00
Lioncash
a6c2e1e95c audio_core/filter: Add explicit cast to assignment in Process()
Previously this would cause warnings about implicit conversions to s16
from a double
2018-08-21 12:32:37 -04:00
bunnei
4f12aba993 Merge pull request #1033 from MerryMage/interp
audio_core: Interpolate
2018-08-13 12:19:59 -04:00
MerryMage
26aa4ae7a8 audio_renderer: samples_remaining counts frames, not samples 2018-08-13 11:26:50 +01:00
MerryMage
0525998743 audio_core: Interpolate 2018-08-13 11:26:50 +01:00
MerryMage
fea4df74c2 audio_core: Implement low-pass filter 2018-08-13 11:26:50 +01:00
MerryMage
c9923e03bb cubeb_sink: Protect queue with a mutex 2018-08-12 20:41:46 +01:00
David Marcec
7d49bcdb1b Pushed the requested sample rate instead of our fixed sample rate 2018-08-12 14:58:36 +10:00
David Marcec
f3ef58207e Added GetAudioRendererSampleRate, GetAudioRendererSampleCount & GetAudioRendererMixBufferCount
GetAudioRendererSampleRate is set as a "STUB" as a game could check if the sample rate it sent and the sample rate it wants don't match. Just a thought of something which could happen so keeping it as stub for the mean time
2018-08-12 14:46:12 +10:00
KAMiKAZOW
fef6c33e77 Make building cubeb optional 2018-08-07 13:21:56 +02:00
bunnei
5904aa20ce audio_core: Implement audren_u audio playback. 2018-08-04 21:54:30 -04:00
bunnei
600e4bbeac audio_core: Use s16 where possible for audio samples. 2018-08-04 18:22:58 -04:00
bunnei
7688b83a1c audio_core: Port codec code from Citra for ADPCM decoding. 2018-08-04 18:22:58 -04:00
bunnei
950de5fd73 cubeb_sink: Support variable sample_rate and num_channels. 2018-08-04 15:30:10 -04:00
bunnei
97647e60f2 audio_core: Sinks need unique names as well. 2018-08-04 14:34:12 -04:00
bunnei
7186882bfe audio_core: Streams need unique names for CoreTiming. 2018-08-04 14:34:12 -04:00
bunnei
1028560b4c Merge pull request #895 from lioncash/sink
sink_details: std::move std::function instances
2018-08-03 11:00:56 -04:00
Lioncash
07a3c8a2a5 audio_out: Use Buffer::Tag alias in GetTagsAndReleaseBuffers()'s prototype
This makes the Buffer::Tag usage consistent with the Stream class's
prototype of GetTagsAndReleaseBuffers().
2018-08-02 05:18:32 -04:00
Lioncash
881380bc97 sink_details: Deduplicate long std::function repetition
We can just use type aliases to avoid needing to write the same long
type twice
2018-08-01 23:56:02 -04:00
Lioncash
5061e89fd1 sink_details: std::move std::function instances
Given std::function is allowed to potentially allocate, these should be
std::move'd to prevent potential reallocation (should that ever happen).
2018-08-01 23:50:48 -04:00
bunnei
14d9b2d6d3 audio_core: Add configuration settings. 2018-07-31 22:38:42 -04:00
bunnei
0ba0cdbed9 audio_core: Implement Sink and SinkStream interfaces with cubeb. 2018-07-30 21:45:24 -04:00
bunnei
f1f3a65391 audio_core: Add interfaces for Sink and SinkStream. 2018-07-30 21:45:24 -04:00
bunnei
02472448da audio_core: Misc. improvements to stream/buffer/audio_out. 2018-07-30 18:58:40 -04:00
bunnei
fa8e381b3e audio_core: Add initial code for keeping track of audout state. 2018-07-27 22:33:31 -04:00
James Rowe
5dbd091a80 Massive removal of unused modules 2018-01-12 19:11:03 -07:00
B3n30
1b2aa3780d CoreTiming: Reworked CoreTiming (cherry-picked from Citra #3119)
* CoreTiming: New CoreTiming; Add Test for CoreTiming
2018-01-08 19:10:25 -05:00
bunnei
9b8fff5568 audio: Log dropping frames as trace to reduce spam. 2018-01-07 16:52:59 -05:00
Huw Pascoe
da1c8d1522 Fixed type conversion ambiguity 2017-09-30 09:34:35 +01:00
Subv
3532957099 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
cbb31422b7 interpolate: Interpolate on a frame-by-frame basis 2017-08-28 10:54:41 +01:00
Yuri Kunde Schlesner
f9a960614d CMake: Add SoundTouch include path to target property 2017-05-27 22:09:28 -07:00
Yuri Kunde Schlesner
d84915c4a1 CMake: Define an interface target for SDL2 definitions 2017-05-27 21:38:49 -07:00
Yuri Kunde Schlesner
b78ce2bce5 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
03ad0ec0e5 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
dc1927a9d1 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
38dfe42ad9 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
0adb56a6b2 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
637f58dd1e 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