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
Liam
084d7d6b01
common: Change semantics of UNREACHABLE to unconditionally crash
2022-06-13 20:09:00 -04:00
Morph
8671aa8dd0
audio_core: Remove -Werror=unused-parameter
...
Removing this as we don't enforce unused parameter warnings elsewhere in the project, and explicitly specify -Wno-unused-parameter in the main CMakeLists.
2022-06-13 18:19:23 -04:00
Morph
efc89c032b
CMakeLists: Make variable shadowing a compile-time error
...
Now that the entire project is free of variable shadowing, we can enforce this as a compile time error to prevent any further introduction of this logic bug.
2022-06-13 18:19:23 -04:00