Commit graph

130 commits

Author SHA1 Message Date
Lioncash
7739479e15 core/core_timing: Make callback parameters consistent
In some cases, our callbacks were using s64 as a parameter, and in other
cases, they were using an int, which is inconsistent.

To make all callbacks consistent, we can just use an s64 as the type for
late cycles, given it gets rid of the need to cast internally.

While we're at it, also resolve some signed/unsigned conversions that
were occurring related to the callback registration.
2019-03-24 18:12:17 -04:00
Lioncash
6ade1d0afd audio_core/cubeb_sink: Convert _MSC_VER ifdefs to _WIN32
This behavior also needs to be visible for MinGW builds as well.
2019-03-09 18:06:23 -05:00
Lioncash
f4458c9da8 audio_core/cubeb_sink: Ensure COM is initialized on Windows prior to calling cubeb_init
cubeb now requires that COM explicitly be initialized on the thread
prior to calling cubeb_init.
2019-02-27 16:14:53 -05:00
Lioncash
3567364c42 audio_core/audio_renderer: Name previously unknown parameters of AudioRendererParameter
Provides names for previously unknown entries (aside from the two u8
that appear to be padding bytes, and a single word that also appears
to be reserved or padding).

This will be useful in subsequent changes when unstubbing behavior related
to the audio renderer services.
2019-02-27 06:09:07 -05:00
Lioncash
cb2cfc87ad audio_core/cubeb_sink: Initialize CubebSinkStream's last_frame data member
Ensures that all member variables are initialized in a deterministic
manner across the board.
2019-02-25 09:40:37 -05:00
Lioncash
31f64510b9 audio_core/cubeb_sink: Add override specifier to destructor
CubebSinkStream inherits from a base class with a virtual destructor, so
override can be appended to CubebSinkStream's destructor.
2019-02-25 09:38:27 -05:00
Lioncash
762b1a20ca audio_core/cubeb_sink: Resolve variable shadowing warnings in SamplesInQueue
The name of the parameter was shadowing the member variable of the same
name. Instead, alter the name of the parameter to prevent said
shadowing.
2019-02-25 09:28:51 -05:00
Lioncash
df93da0615 audio_core/codec: Resolve truncation warnings within DecodeADPCM
The assignments here were performing an implicit truncation from int to
s16. Make it explicit that this is desired behavior.
2019-02-25 09:24:39 -05:00
Lioncash
bce7a71232 audio_core/buffer: Make const and non-const getter for samples consistent
This way proper const/non-const selection can occur.
2019-02-16 15:21:35 -05:00
Lioncash
1c3371c921 core_timing: Convert core timing into a class
Gets rid of the largest set of mutable global state within the core.
This also paves a way for eliminating usages of GetInstance() on the
System class as a follow-up.

Note that no behavioral changes have been made, and this simply extracts
the functionality into a class. This also has the benefit of making
dependencies on the core timing functionality explicit within the
relevant interfaces.
2019-02-15 21:50:25 -05:00
Lioncash
1d2de5c4b5 core_timing: Rename CoreTiming namespace to Core::Timing
Places all of the timing-related functionality under the existing Core
namespace to keep things consistent, rather than having the timing
utilities sitting in its own completely separate namespace.
2019-02-12 12:42:17 -05:00
fearlessTobi
ed00930999 dsp_interface: fix sound being played while volume is 0
According to documentation, if the argument of std::exp is zero, one is returned.
However we want the return value to be also zero in this case so no audio is played.
2019-01-26 22:42:09 +01:00
Otávio Pace
9cff0d2ff8 audio_core: remove unnecessary spaces on comments 2019-01-14 00:22:05 -02:00
Lioncash
f652c969a4 audio_core: Convert LOG_CRITICAL + UNREACHABLE over to UNIMPLEMENTED/UNIMPLEMENTED_MSG
These two macros being used in tandem were used prior to the
introduction of UNIMPLEMENTED and UNIMPLEMENTED_MSG. This provides
equivalent behavior, just with less typing/reading involved.
2018-12-28 14:13:58 -05:00
bunnei
e93cc21e78 Merge pull request #1902 from lioncash/audio
audio_core: Make g_sink_details internally linked
2018-12-14 21:48:17 -05:00
Lioncash
1a69d0d290 audio_core: Make g_sink_details internally linked
We can hide the direct array from external view and instead provide
functions to retrieve the necessary info. This has the benefit of
completely hiding the makeup of the SinkDetails structure from the rest
of the code.

Given that this makes the array hidden, we can also make the array
constexpr by altering the members slightly. This gets rid of several
static constructor calls related to std::vector and std::function.

Now we don't have heap allocations here that need to occur before the
program can even enter main(). It also has the benefit of saving a
little bit of heap space, but this doesn't matter too much, since the
savings in that regard are pretty tiny.
2018-12-13 16:44:32 -05:00
heapo
4c83e5cd1e Avoid (expensive) audio interpolation when sample rates already match 2018-12-06 09:46:08 -08:00
Zach Hilman
fe0071f8fa core: Port all current usages of Event to Readable/WritableEvent 2018-11-29 08:45:41 -05:00
Lioncash
83ebfabca8 audio_core/audio_renderer: Fix typo in AuxInfo member name 2018-11-13 13:32:13 -05:00
Markus Wick
399d30b4bf microprofile: Drop ReleaseActiveBuffer scope.
This was created with the unfinished resampling PR in mind.
As the resampling is now on the audio thread, we don't need to care about this here any more.
2018-11-06 17:45:32 +01:00
fearlessTobi
0470bc90ce time_stretch: Switch to values of Citra 2018-10-29 14:49:36 +01:00
Weiyi Wang
8c7a40434a cubeb_sink: ignore null-name device when selecting
We already ignore them on listing devices. We should do the same when selecting devices. This fix a crash when opening a specific device while there is a null device in the list
2018-10-27 00:43:04 +02:00
Lioncash
75ed1149fb time_stretch: Remove unused m_channel_count member variable
This is only stored to, but never read from.
2018-10-24 00:46:17 -04:00
David Marcec
1b4319c85c EffectOutStatus padding is now in hex 2018-10-09 11:20:54 +11:00
David Marcec
5f33966902 Fixups for softlock 2018-10-07 14:25:39 +11:00
David Marcec
a097860593 Fixed missing return
Softlock explanation:
after effects are initialized in smo, nothing actually changes the state. It expects the state to always be initialized. With the previous testing, updating the states much like how we handle the memory pools continue to have the softlock(which is why I said it probably wasn't effects) after further examination it seems like effects need to be initialized but the state remains unchanged until further notice. For now, assertions are added for the aux buffers to see if they update, unable to check as I haven't gotten smo to actually update them yet.
2018-10-07 14:19:55 +11:00
David Marcec
f572064010 Fixed smo softlock 2018-10-07 14:14:09 +11:00
Lioncash
9254ec6fde stream: Preserve enum class type in GetState()
Preserves the meaning/type-safetiness of the stream state instead of
making it an opaque u32. This makes it usable for other things outside
of the service HLE context.
2018-09-23 20:03:38 -04:00
David Marcec
5d1edf66c1 Added audren:u#GetAudioRendererState 2018-09-23 22:32:01 +10:00
Subv
747e579d97 Logging: Change the TimeStretch::Process log from debug to trace level.
This function is called too many times and makes the debug logging basically unusable due to the spam.
2018-09-20 22:33:54 -05:00
Lioncash
e27a1af5f7 time_stretch: Remove unused <array> include
This isn't used within this header and isn't necessary.
2018-09-17 15:08:34 -04:00
Lioncash
184f8e72b0 stream: Replace includes with forward declarations where applicable
Avoids propagating includes in headers where it's not necessary to do
so.
2018-09-17 15:08:34 -04:00
Lioncash
01a14e4bdf audio_renderer: Replace includes with forward declarations where applicable
Avoids including unnecessary headers within the audio_renderer.h header,
lessening the likelihood of needing to rebuild source files including
this header if they ever change.

Given std::vector allows forward declaring contained types, we can move
VoiceState to the cpp file and hide the implementation entirely.
2018-09-17 15:08:30 -04:00
bunnei
d6c188f19d Merge pull request #1314 from lioncash/cast
audio_core/time_stretch: Silence truncation warnings in Process()
2018-09-17 12:28:19 -04:00
bunnei
5647c5bb75 Merge pull request #1321 from lioncash/audio-shadow
cubeb_sink: Get rid of variable shadowing within CubebSink's constructor
2018-09-17 12:26:29 -04:00
bunnei
9b4cc24f0f Merge pull request #1320 from lioncash/name
cubeb_sink: Correct context name in ListCubebSinkDevices()
2018-09-17 10:10:33 -04:00
fearlessTobi
1190ea6ddb Port #4182 from Citra: "Prefix all size_t with std::" 2018-09-15 15:21:06 +02:00
Lioncash
7c7c12f664 cubeb_sink: Get rid of variable shadowing within CubebSink's constructor
The parameter of the lambda was shadowing the variable that was being
assigned to.
2018-09-14 12:20:51 -04:00
Lioncash
514f8f036c cubeb_sink: Correct context name in ListCubebSinkDevices()
This ain't Citra.
2018-09-14 12:18:09 -04:00
Lioncash
a51b67f163 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
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