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
Morph
eea68eae18
command_generator: Use u8 for tap index lut
...
Using this smaller type saves 1024 bytes in the compiled executable.
2022-05-13 00:50:58 -04:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
Andrea Pappacoda
faf6a9876c
audio_core: remove time stretcher
...
Also drop the SoundTouch dependency
2022-04-01 19:54:58 +02:00
lat9nq
81806603eb
audio_core: Update current process revision
...
Update CURRENT_PROCESS_REVISION from REV9 to REVA.
Used by Nintendo Entertainment System - Nintendo Switch Online 6.0.0 and
Super Nintendo Entertainment System - Nintendo Switch Online 3.0.0.
2022-02-11 00:56:13 -05:00
german77
850896a52b
audio/stream: Adjust volume scale factor
2022-01-15 20:28:37 -06:00
ameerj
41aec2773f
general: Add missing copyright notices
2021-12-05 16:18:53 -05:00
ameerj
5daf3abe65
common/logging: Move Log::Entry declaration to a separate header
...
This reduces the load of requiring to include std::chrono in all files which include log.h
2021-10-01 20:48:49 -04:00
bunnei
7d464f73c9
Merge pull request #6571 from Kelebek1/Mix
...
audio_core: Replace NaN mix volume samples with silence
2021-07-12 22:09:05 -07:00
Ameer J
5edc96f4a4
Merge pull request #6539 from lat9nq/default-setting
...
general: Move most settings' defaults and labels into their definition
2021-07-08 14:46:31 -04:00
Kelebek1
7905eb0254
Replace NaN mix volume samples with silence.
...
Fixes Xenoblade Chronicles 2 blowing out the audio.
2021-07-08 17:42:15 +01:00
Morph
92a3daf029
Merge pull request #6564 from Kelebek1/Audio
...
Support more PCM formats
2021-07-08 12:14:58 -04:00
Kelebek1
7636fefb71
audio_core: Preserve front channel volume after 6 to 2 downmix
...
Many games report 6 channel output while only providing data for 2. We only output 2-channel audio regardless, and in the downmixing, front left/right only provide 36% of their volume. This is done assuming all of the other channels also contain valid data, but in many games they don't. This PR alters the downmixing to preserve front left/right, so volume is not lost.
This improves volume in Link's Awakening, New Super Mario Bros U, Disgaea 6, Super Kirby Clash.
2021-07-08 17:07:23 +01:00
Kelebek1
dbcc093d88
Support more PCM formats. Fixes Ys IX audio.
2021-07-06 18:43:23 +01:00
Morph
ebb82b0b83
CMakeLists: Treat -Wsign-compare as an error on GCC/Clang
...
Treats (un)signed comparison mismatches as errors to be consistent with MSVC
2021-07-06 12:50:09 -04:00
Kelebek1
b455043e45
Fix XC2/VOEZ crashing, add audio looping and a few misc fixes
2021-07-01 06:01:01 +01:00
lat9nq
b91b76df4f
general: Make most settings a BasicSetting
...
Creates a new BasicSettings class in common/settings, and forces setting
a default and label for each setting that uses it in common/settings.
Moves defaults and labels from both frontends into common settings.
Creates a helper function in each frontend to facillitate reading the
settings now with the new default and label properties.
Settings::Setting is also now a subclass of Settings::BasicSetting. Also
adds documentation for both Setting and BasicSetting.
2021-06-28 17:32:17 -04:00
Kelebek1
0857d6a3db
Decouple audio processing and run at variable rate
...
Currently, processing of audio samples is called from AudioRenderer's Update method, using a fixed 4 buffers to process the given samples. Games call Update at variable rates, depending on framerate and/or sample count, which causes inconsistency in audio processing. From what I've seen, 60 FPS games update every ~0.004s, but 30 FPS/160 sample games update somewhere between 0.02 and 0.04, 5-10x slower. Not enough samples get fed to the backend, leading to a lot of audio skipping.
This PR seeks to address this by de-coupling the audio consumption and the audio update. Update remains the same without calling for buffer queuing, and the consume now schedules itself to run based on the sample rate and count.
2021-06-27 15:58:07 +01:00
bunnei
50d0cc2716
audio_core: common: Bump audio revision to 9.
...
- This is used in fw 12.x.x games.
2021-06-24 18:22:10 -07:00
Chloe
f216a9432b
Add missing includes ( #6521 )
...
* Add missing includes
* Add array
2021-06-24 03:24:17 -04:00
Kelebek1
ba3af04da1
Implement audout GetAudioOutPlayedSampleCount
...
Used in Ninja Gaiden games.
2021-06-22 04:39:17 +01:00
Clément Gallet
f611506dca
Various suggestions by v1993 and lioncash
2021-06-07 12:51:59 +02:00
Clément Gallet
c7c99905f4
Add SDL2 audio backend
2021-06-06 11:28:38 +02:00
Morph
12c1766997
general: Replace RESULT_SUCCESS with ResultSuccess
...
Transition to PascalCase for result names.
2021-06-02 00:39:27 -04:00
bunnei
a4c6712a4b
common: Move settings to common from core.
...
- Removes a dependency on core and input_common from common.
2021-04-14 16:24:03 -07:00
Chloe Marcec
7ad63ea542
revert to std::sin and std::cos
2021-02-12 18:48:10 -08:00
Chloe Marcec
d28b942458
address issues
2021-02-12 18:48:10 -08:00
Chloe Marcec
4a7fd91857
audren: Implement I3dl2Reverb
...
Most notable fix is the voices in Fire Emblem Three Houses
2021-02-12 18:48:10 -08:00
bunnei
7666c0994c
Merge pull request #5868 from german77/HandheldFix
...
Prevent over scheduling audio events and add motion update unschedule event
2021-02-08 11:33:53 -08:00
german
7784b1da6d
Prevent over scheduling audio events and terminate properly the motion update event
2021-02-02 10:17:10 -06:00
Chloe Marcec
9fc7f60b94
audren: Disable reverb for the time being
...
As this is causing issues in a few games, it's best to have it disabled until it's completely implemented
2021-02-01 14:41:58 +11:00
Chloe Marcec
b2b95e96c1
audout: FlushAudioOutBuffers
...
Fixes Devil May Cry
2021-01-24 19:13:34 +11:00
ReinUsesLisp
f8650a9580
core: Silence Wclass-memaccess warnings
...
This requires making several types trivial and properly initialize
them whenever they are called.
2021-01-15 16:31:19 -03:00
ReinUsesLisp
3ff978aa4f
common/common_funcs: Rename INSERT_UNION_PADDING_{BYTES,WORDS} to _NOINIT
...
INSERT_PADDING_BYTES_NOINIT is more descriptive of the underlying behavior.
2021-01-15 16:27:28 -03:00
bunnei
60121d8f28
Merge pull request #5264 from 16-Bit-Dog/patch-1
...
Make the coding conventions more consistant
2020-12-31 01:46:53 -08:00
16-Bit-Dog
fa5a1a4bfd
Make the coding conventions more consistant
...
lut_index had 0 added when nothing was supposed to be added
despite this, index was not added to 0 when nothing was supposed to be added...
2020-12-30 19:03:26 -05:00
bunnei
7d77a3f88f
hle: service: Acquire and release a lock on requests.
...
- This makes it such that we can safely access service members from CoreTiming thread.
2020-12-28 21:33:34 -08:00
bunnei
c7a06908ae
audio_core: stream: Ensure buffer is valid before release.
2020-12-28 21:33:34 -08:00
Vitor Kiguchi
a1e7360273
Update cubeb and request a persistent stream session
2020-12-05 22:26:41 +01:00
bunnei
88089c8754
Merge pull request #5000 from lioncash/audio-error
...
audio_core: Make shadowing and unused parameters errors
2020-12-02 23:08:43 -08:00
Lioncash
1ea6bdef05
audio_core: Make shadowing and unused parameters errors
...
Moves the audio code closer to enabling warnings as errors in general.
2020-12-03 00:54:31 -05:00
Chloe Marcec
d7019d8307
audio_core: Remove temp_mix_buffer
...
It's unused and doesn't need to be initialized
2020-11-28 23:25:28 +11:00
Chloe Marcec
908d3c5679
Addressed changes
2020-11-17 15:40:19 +11:00
Chloe Marcec
9a4beac95a
audren: Make use of nodiscard, rework downmixing, release all buffers
...
Preliminary work for upmixing & general cleanup. Fixes basic issues in games such as Shovel Knight and slightly improves the LEGO games. Upmixing stitll needs to be implemented.
Audio levels in a few games will be fixed as we now use the downmix coefficients when possible instead of supplying our own
2020-11-17 14:14:29 +11:00
Lioncash
e408bd3b7c
core: Fix clang build pt.2
...
Resolves the clang build issue in a more unintrusive way.
2020-10-20 22:16:03 -04:00
bunnei
3d592972dc
Revert "core: Fix clang build"
2020-10-20 19:07:39 -07:00
Lioncash
be1954e04c
core: Fix clang build
...
Recent changes to the build system that made more warnings be flagged as
errors caused building via clang to break.
Fixes #4795
2020-10-17 19:50:39 -04:00
Lioncash
9f9b64d280
audio_core/CMakeLists: Make warnings consistent with core
...
Normalizes the warnings shared between audio_core and core.
2020-10-13 16:36:58 -04:00
bunnei
09609dd50e
Merge pull request #4721 from lioncash/genfn
...
codec: Make lookup table static constexpr
2020-09-29 15:16:24 -07:00
bunnei
2a82f1b08b
Merge pull request #4722 from lioncash/casting
...
cubeb_sink: Use static_cast instead of reinterpret_cast in DataCallback()
2020-09-29 15:09:12 -07:00
bunnei
a8be822e8e
Merge pull request #4719 from lioncash/audio-warn
...
audio_core: Resolve sign conversion warnings
2020-09-27 01:52:59 -07:00
bunnei
891090799c
Merge pull request #4720 from lioncash/header
...
audio_core: Remove unnecessary inclusions
2020-09-25 22:04:26 -07:00
Lioncash
90c6141164
command_generator: Make lookup table static constexpr
...
Allows compilers to elide needing to push these values on the stack
every time the function is called.
2020-09-25 18:33:04 -04:00
Lioncash
dc83ca8914
behavior_info: Fix typo Renerer -> Renderer
2020-09-25 17:14:02 -04:00