Kelebek1
2feb40f14d
Wait for the terminate event before destroying a system instance
2023-05-01 00:27:12 +01:00
Billy Laws
8908663f12
Use GetGlobalTimeNs as opposed to clock ticks
2023-04-08 21:54:19 +01:00
Billy Laws
0afb9631b5
Add some explicit latency to sample count reporting
...
Some games have very tight scheduling requirements for their audio which can't really be matched on the host, adding a constant to the reported value helps to provide some leeway.
2023-04-03 23:11:36 +01:00
bunnei
6775a6ee02
Merge pull request #9969 from bylaws/master
...
Audio synchronisation improvements
2023-04-01 14:34:59 -07:00
Billy Laws
530fe24768
audio_core: No longer stall when sink queue is full
...
Now the audout and audren update rates are tied to the sink status stalling is no longer necessary.
2023-03-27 22:01:41 +01:00
Billy Laws
237934b736
Run clang-format
2023-03-27 22:01:41 +01:00
Billy Laws
ea5dd02db9
audio: Wait for samples on the emulated DSP side to avoid desyncs
...
Waiting on the host side is inaccurate and leads to desyncs in the event of the sink missing a deadline that require stalls to fix. By waiting for the sink to have space before even starting rendering such desyncs can be avoided.
2023-03-27 21:34:28 +01:00
Billy Laws
d8fc3f403b
audio: Interpolate system manager sample count using host sink sample info
...
This avoids the need to stall if the host sink sporadically misses the deadline, in such a case the previous implementation would report them samples as being played on-time, causing the guest to send more samples and leading to a gradual buildup.
2023-03-26 22:48:57 +01:00
Liam
41d99aa89d
memory: rename global memory references to application memory
2023-03-23 20:28:47 -04:00
Liam
600f325d87
general: fix spelling mistakes
2023-03-12 11:33:01 -04:00
liamwhite
021af4fd00
Merge pull request #9917 from Morph1984/the-real-time
...
native_clock: Re-adjust the RDTSC frequency to its real frequency
2023-03-10 13:55:11 -05:00
Morph
3053a62375
core: Promote CPU/GPU threads to time critical
...
And also demote Audren and CoreTiming to High thread priority.
2023-03-07 21:17:46 -05:00
Liam
1d0fe75e7c
hle: rename legacy errors to Results
2023-03-06 20:58:42 -05:00
Kelebek1
104cb6aa0a
Fix a bug with the Reverb command in reading from the pre_delay line.
2023-03-02 06:00:55 +00:00
bunnei
744434de38
Merge pull request #9769 from Kelebek1/audio_oob
...
[audio_core] Fix depop prepare
2023-02-16 12:26:23 -08:00
liamwhite
6d77de96da
Merge pull request #9796 from liamwhite/current
...
general: rename CurrentProcess to ApplicationProcess
2023-02-15 17:42:45 -05:00
arades79
683019878f
remove static from pointer sized or smaller types for aesthetics, change constexpr static to static constexpr for consistency
...
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-14 12:35:39 -05:00
arades79
45e13b03f3
add static lifetime to constexpr values to force compile time evaluation where possible
...
Signed-off-by: arades79 <scravers@protonmail.com>
2023-02-14 12:33:11 -05:00
Liam
ceda2d280e
general: rename CurrentProcess to ApplicationProcess
2023-02-13 19:03:12 -05:00
Kelebek1
3a90ed99be
Fix biquad filter command's state buffer offset
2023-02-13 16:21:29 +00:00
Kelebek1
2e02ed8bb5
Add fallback for memory read/write in case the address goes over a 4K page
2023-02-11 16:27:43 +00:00
Kelebek1
19e1ea6a02
Fix depop prepare receiving bad mix infos and writing out of bounds, and update aux a bit, may help
2023-02-11 10:21:25 +00:00
Merry
3c60bc36a1
biquad_filter: Clamp f64 in ApplyBiquadFilterFloat
2023-02-10 20:43:34 +00:00
Merry
9bdcb1070f
biquad_filter: Fix rounding in ApplyBiquadFilterInt
2023-02-10 20:34:52 +00:00
Narr the Reg
7c0dcea96c
audio: cubeb: Fix yuzu crashing when it test for latency
2023-02-09 19:38:03 -06:00
Merry
a0e8e5b22e
upsample: Fix coefficient format
2023-01-14 17:09:03 +00:00
Merry
122a8faa38
audio_core: Fix off-by-one error in upsampler
2023-01-14 15:19:11 +00:00
Liam
c18cf05a06
cmake: make cubeb and SDL2 optional
2022-12-28 17:29:32 -05:00
Kelebek1
6a56f42f5d
Signal buffer event on audio in/out system stop, and force remove all registered audio buffers
2022-12-16 16:07:24 +00:00
Liam
e532b74e11
audio_core: remove explicitly defaulted and implicitly deleted constructors
2022-12-10 13:05:15 -05:00
Alexandre Bouvier
e6ae720c33
cmake: use sdl2 imported target
2022-12-06 01:26:30 +01:00
Alexandre Bouvier
8e17b5469f
cmake: prefer system libraries
2022-12-04 17:09:25 +01:00
liamwhite
75e16547f8
Merge pull request #9300 from ameerj/pch
...
CMake: Use precompiled headers to improve compile times
2022-12-03 14:10:06 -05:00
liamwhite
22aff09b33
Merge pull request #9289 from liamwhite/fruit-company
...
general: fix compile for Apple Clang
2022-12-03 12:09:21 -05:00
ameerj
5b5612c1cc
CMake: Consolidate common PCH headers
2022-11-30 18:30:30 -05:00
Fernando S
4e89979c87
Merge pull request #9320 from yuzu-emu/fix-audio-suspend
...
AudioCore: Take suspend lock when stalling the running process.
2022-11-30 16:41:32 +01:00
bunnei
8fd4e44014
audio_core: sink_stream: Hold the suspend lock when process is stalled.
...
- Prevents us from clashing with other callers trying to un/stall.
2022-11-29 20:32:06 -08:00
ameerj
37bc5118ea
CMake: Use precompiled headers
2022-11-29 18:50:49 -05:00
lat9nq
0941ae0b61
CMake: Directly link to SDL2-static when appropriate
...
Trying to be lazy and alias SDL2 to SDL2-static causes issues in later
versions of CMake. Just use the same condition to tell which one to use.
2022-11-28 23:21:14 -05:00
Liam
9737615948
general: fix compile for Apple Clang
2022-11-22 22:22:28 -05:00
Kelebek1
84d4da89a5
Use the maximum input index for samples buffer span size, not just the input count
2022-11-22 15:32:11 +00:00
Kyle Kienapfel
6fa3faec65
Add break for default cases
...
Visual Studio has an option to search all files in a solution, so I
did a search in there for "default:" looking for any missing break
statements.
I've left out default statements that return something, and that throw
something, even if via ThrowInvalidType. UNREACHABLE leads towards throw
R_THROW macro leads towards a return
2022-11-13 16:30:55 -08:00
Liam
cbaf642ffe
Initial ARM64 support
2022-11-09 16:58:49 -05:00
Lioncash
e0ec9ffc36
audio_in/out_system: Pass Initialize members by value where applicable
...
applet_resource_user_id isn't actually modified and is just assigned to
a member variable, so this doesn't need to be a mutable reference.
Similarly, the device name itself isn't modified and is only moved. We
pass by value here, since we can still perform the move, but eliminate a
sneaky set of calls that can unintentionally destroy the original
string. Given how nested the calls are, it's good to get rid of this
potential vector for a use-after-move bug.
2022-10-26 11:21:48 -04:00
Morph
6908ea2284
general: Resolve -Wclass-memaccess
2022-10-22 15:02:04 -04:00
Morph
e6ab1f673b
general: Enforce C4800 everywhere except in video_core
2022-10-22 15:02:04 -04:00
Morph
93297d14d8
CMakeLists: Remove all redundant warnings
...
These are already explicitly or implicitly set in src/CMakeLists.txt
2022-10-22 15:02:04 -04:00
Kelebek1
7bd3930939
Update audio_core for firmware 15.0.0
2022-10-19 06:16:15 +01:00
lat9nq
4b773b15a6
sdl2_sink: Inline variable init into if condition
...
Co-authored-by: Mai <mathew1800@gmail.com>
2022-10-16 21:36:40 -04:00
lat9nq
9fe077635e
sdl2_sink: Distinguish between capture and non-capture device names
...
The function prototype appears to care whether we are loading capture
devices or not, and SDL_GetAudioDeviceName has a parameter to use it,
but for some reason it isn't.
This puts `capture` where it goes.
2022-10-16 03:15:54 -04:00
lat9nq
5c7eef3756
sdl2_sink: Check for null string when loading SDL audio devices
...
Attempting to place a null string into a vector of strings causes an
error that closes the application.
Don't.
2022-10-16 03:14:52 -04:00
liamwhite
ae6dd1143c
Merge pull request #9061 from liamwhite/writable-event
...
kernel: remove KWritableEvent
2022-10-14 17:30:38 -04:00
Narr the Reg
d2170075e6
audio_core: Revert sink name to sdl2
2022-10-14 10:59:33 -05:00
Liam
a9ace6856d
kernel: remove KWritableEvent
2022-10-12 20:29:29 -04:00
Kelebek1
8c9e238a7b
Choose the SDL audio backend when Cubeb reports too high of a latency
2022-10-09 13:47:59 +01:00
Liam
35d3e7db2a
common: remove "yuzu:" prefix from thread names
2022-10-03 18:43:56 -04:00
bunnei
1b1b99fbd5
Merge pull request #8941 from Kelebek1/single_core_sucks
...
Do not try to pause core timing from the audio thread when using single-core
2022-09-23 22:40:30 -07:00
Morph
c2c3f2c3e7
Merge pull request #8939 from lioncash/render
...
audio_renderer: Make GetCommandBuffer() take a u32
2022-09-23 09:07:52 -04:00
Kelebek1
56b8a9ba6e
Do not try to pause core timing from the audio thread when using single-core
2022-09-22 01:23:57 +01:00
Lioncash
c891497b61
audio_renderer: Make GetCommandBuffer() take a u32
...
This function is only ever called with unsigned types, and all of the
other interface functions take session_id as a u32, so this makes the
class a little more consistent.
2022-09-21 10:00:57 -04:00
Lioncash
00616c7ad8
audio_manager: Forward declare result type
...
Moves the include into the cpp file to lessen header dependencies.
2022-09-21 09:43:59 -04:00
Lioncash
75d6fe3669
audio_manager: Remove redundant cast in ThreadFunc()
...
We can just use a local here to get rid of a second cast.
2022-09-21 09:35:22 -04:00
Lioncash
e48e22eb52
audio_manager: move std::functions in SetOutManager/SetInManager
...
Prevents unnecessary reallocations in the event the captured variables
are larger than the internal std::function buffer.
2022-09-21 09:32:15 -04:00
Lioncash
da0fd51642
audio_manager: Remove unused forward declarations
...
Allows us to get rid of some unnecessary forward declarations and
includes.
2022-09-21 09:29:35 -04:00
Lioncash
08d81e0bd8
audio_manager: Remove unused sessions_started member variable
...
This isn't used, so it can be removed.
2022-09-21 09:28:05 -04:00
Lioncash
b59b967280
audio_manager: Remove dependence on system state
...
This isn't used by the class, so this can be removed for the time being.
2022-09-21 09:26:42 -04:00
bunnei
4a7a771340
Merge pull request #8914 from lioncash/audio-const
...
audio_core: Mark several member functions as const
2022-09-16 23:51:31 -07:00
Morph
60aa942210
Merge pull request #8911 from lioncash/cexpr-string
...
audio_device: Make AudioDeviceName constructor constexpr
2022-09-16 10:18:58 -04:00
Lioncash
7e3cdfc453
audio_renderer: Pass command buffer by const reference
...
This is just being copied and isn't modified at all.
2022-09-16 10:06:53 -04:00
Lioncash
d5d6322640
sink_stream: Mark GetQueueSize as const
2022-09-16 10:00:52 -04:00
Lioncash
6b1cb73350
node_states: Mark relevant member functions as const
2022-09-16 09:59:56 -04:00
Lioncash
e4bc7b8611
i3dl2/reverb: Mark relevant member functions as const
...
These two don't modify member state.
2022-09-16 09:58:49 -04:00
Lioncash
b2c2138af7
behavior_info: Mark CopyErrorInfo as const
...
This doesn't modify member state.
We can also mark the parameter of AppendError as const as well, since it
isn't modified.
2022-09-16 09:55:17 -04:00
Lioncash
b862d5d8d8
audio_device: Mark GetDeviceVolume as const
...
This doesn't modify instance state.
2022-09-16 09:52:34 -04:00
Lioncash
36c77761cf
audio_render_manager: Mark several functions as const
2022-09-16 09:50:32 -04:00
Lioncash
7a5d235d94
audio_in: Mark several functions as const
...
These functions don't modify class state, so we can mark them as such
2022-09-16 09:45:54 -04:00
Lioncash
d1f3c121a0
audio_out: Mark several functions as const
...
These don't affect class state, so we can mark them as such.
2022-09-16 09:45:51 -04:00
Lioncash
e9109cb5f2
audio_buffers: Pass by const-ref in AppendBuffers
...
This function doesn't modify the passed in buffer, so we can make that
explicit.
2022-09-16 09:36:03 -04:00
Lioncash
cb2a33babc
device_session: Convert for loop into ranged for in AppendBuffers
...
Simplifies the indexing code a little bit.
2022-09-16 09:32:57 -04:00
Lioncash
a278fa6e2a
device_session: Pass arguments by const-ref in relevant functions
...
These functions don't modify the passed in audio buffers, so we can
signify that in the interface.
2022-09-16 09:31:33 -04:00
bunnei
e85bda5f31
Merge pull request #8878 from Kelebek1/remove_pause
...
Remove pause callbacks from coretiming
2022-09-15 13:50:13 -07:00
liamwhite
b06ef5d530
Merge pull request #8901 from lioncash/docs
...
audio_core: Amend documentation comment tags
2022-09-15 10:36:18 -04:00
Lioncash
2c91fbf7f1
audio_core: Amend documentation tags
...
Resolves a wackload of -Wdocumentation warnings due to mismatching tags
and whatnot.
2022-09-15 09:47:23 -04:00
Lioncash
d55046c5e9
audio_device: Mark member functions as const where applicable
...
These member functions don't modify any internal state.
2022-09-15 09:06:17 -04:00
Lioncash
1c7dae966d
audio_device: Make AudioDeviceName constructor constexpr
...
These are used as read-only arrays, so we can make the data read-only
and available at compile-time.
Now constructing an AudioDevice no longer needs to initialize some
tables
2022-09-15 09:03:40 -04:00
Lioncash
f08046f4d7
compressor: Simplify memset in InitializeCompressorEffect
...
Provides equivalent behavior while being significantly smaller.
2022-09-13 13:34:58 -04:00
Lioncash
fd876f200f
compressor: Mark params parameters as const
...
These functions don't modify the parameters.
2022-09-13 13:33:41 -04:00
Lioncash
bdb866af1d
compressor: Remove unneeded casts in ApplyCompressorEffect
...
Same behavior, but also silences a -Wcast-qual warning, since the second
cast casts away const.
2022-09-13 13:28:54 -04:00
Kelebek1
e93e898df5
Remove pause callbacks from coretiming
2022-09-13 13:20:35 +01:00
Kelebek1
1deecc6f70
Remove a pragma once from a cpp file
2022-09-12 19:27:11 +01:00
Kelebek1
2129d040a5
Don't stall with nvdec
2022-09-04 05:41:06 +01:00
Kelebek1
ea9ff71725
Rework audio output, connecting AudioOut into coretiming to fix desync during heavy loads.
2022-09-02 04:43:04 +01:00
Kelebek1
85c9e31791
Do some log memes to help perceived volume
2022-08-12 19:59:09 +01:00
Liam
73a87edc45
audio_core: fix -Wuninitialized when compiling with ASan
2022-07-29 23:30:01 -04:00
Kelebek1
6c47b43a60
Avoid depop out of bounds
2022-07-27 23:17:18 +01:00
Andrea Pappacoda
cdb240f3d4
chore: make yuzu REUSE compliant
...
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.
Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.
The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.
Following REUSE has a few advantages over the current approach:
- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
`.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
files like binary assets / images is always accurate and up to date
To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.
[REUSE]: https://reuse.software
Follow-up to 01cf05bc75
2022-07-27 12:53:49 +02:00
Kelebek1
458da8a948
Project Andio
2022-07-22 01:11:32 +01:00
Kelebek1
240650f6a6
Rework CoreTiming
2022-07-10 06:59:40 +01:00
german77
a7d9be1384
core: Replace all instances of ResultCode with Result
2022-06-26 20:21:37 -05:00
Mai
103997ee56
Merge pull request #8383 from Morph1984/shadow-of-the-past
...
yuzu: Make variable shadowing a compile-time error
2022-06-14 21:08:58 -04:00