Lioncash
9969a5db1e
audio_core/time_stretch: Silence truncation warnings in Process()
...
The SoundTouch API only accepts uint amount of samples.
2018-09-13 19:50:01 -04:00
bunnei
60899b80f0
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
926dd41587
Merge pull request #1163 from FearlessTobi/add-audio-stretching
...
audio_core: Add audio stretching support
2018-09-12 18:23:54 -04:00
MerryMage
957ddab679
audio_core: Flush stream when not playing anything
2018-09-12 18:09:14 +01:00
Lioncash
bad035e9a3
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
55af5bda55
cubeb_sink: Downsample arbitrary number of channels
2018-09-09 09:51:46 +01:00
MerryMage
1aa195a9c0
cubeb_sink: Perform audio stretching
2018-09-08 18:56:38 +01:00
MerryMage
e51bd49f87
audio_core: Add audio stretcher
2018-09-08 18:56:38 +01:00
MerryMage
7e697ab7ff
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
6d9dd1dc6d
cubeb_sink: Use RingBuffer
2018-09-08 18:56:38 +01:00
fearlessTobi
a6efff8b02
Add audio stretching support
2018-09-08 18:26:23 +01:00
MerryMage
a76f0d5d06
audio_renderer: Rename AudioOut instance to audio_out
2018-09-08 16:50:12 +01:00
Markus Wick
10bc725944
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
0057a47e41
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
f19b4fab5f
Merge pull request #1033 from MerryMage/interp
...
audio_core: Interpolate
2018-08-13 12:19:59 -04:00
MerryMage
01d199965a
audio_renderer: samples_remaining counts frames, not samples
2018-08-13 11:26:50 +01:00
MerryMage
4b44b8b4fb
audio_core: Interpolate
2018-08-13 11:26:50 +01:00
MerryMage
56300f2928
audio_core: Implement low-pass filter
2018-08-13 11:26:50 +01:00
MerryMage
fcc5ffdfdd
cubeb_sink: Protect queue with a mutex
2018-08-12 20:41:46 +01:00
David Marcec
094f6003e0
Pushed the requested sample rate instead of our fixed sample rate
2018-08-12 14:58:36 +10:00
David Marcec
e5ee0afe6f
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
0f5c4615ae
Make building cubeb optional
2018-08-07 13:21:56 +02:00
bunnei
b46df98e93
audio_core: Implement audren_u audio playback.
2018-08-04 21:54:30 -04:00
bunnei
1dee8ceda1
audio_core: Use s16 where possible for audio samples.
2018-08-04 18:22:58 -04:00
bunnei
f1cb3903ac
audio_core: Port codec code from Citra for ADPCM decoding.
2018-08-04 18:22:58 -04:00
bunnei
02fccc0940
cubeb_sink: Support variable sample_rate and num_channels.
2018-08-04 15:30:10 -04:00
bunnei
34b3f83498
audio_core: Sinks need unique names as well.
2018-08-04 14:34:12 -04:00
bunnei
9f846d3aa4
audio_core: Streams need unique names for CoreTiming.
2018-08-04 14:34:12 -04:00
bunnei
b6d61abd78
Merge pull request #895 from lioncash/sink
...
sink_details: std::move std::function instances
2018-08-03 11:00:56 -04:00
Lioncash
c1c397d37c
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
2bc4ab3958
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
89ebef6571
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
ca84b530a3
audio_core: Add configuration settings.
2018-07-31 22:38:42 -04:00
bunnei
f437c11caf
audio_core: Implement Sink and SinkStream interfaces with cubeb.
2018-07-30 21:45:24 -04:00
bunnei
9ef227e09d
audio_core: Add interfaces for Sink and SinkStream.
2018-07-30 21:45:24 -04:00
bunnei
0e8a2c7222
audio_core: Misc. improvements to stream/buffer/audio_out.
2018-07-30 18:58:40 -04:00
bunnei
ab756fd068
audio_core: Add initial code for keeping track of audout state.
2018-07-27 22:33:31 -04:00
James Rowe
ebf9a784a9
Massive removal of unused modules
2018-01-12 19:11:03 -07:00
B3n30
82151d407d
CoreTiming: Reworked CoreTiming (cherry-picked from Citra #3119 )
...
* CoreTiming: New CoreTiming; Add Test for CoreTiming
2018-01-08 19:10:25 -05:00
bunnei
bd377908d7
audio: Log dropping frames as trace to reduce spam.
2018-01-07 16:52:59 -05:00
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