Weiyi Wang
14eb3561de
audio_core/hle: move implementation of RecvDataIsReady
2018-12-21 20:49:19 -05:00
Weiyi Wang
b609753fb6
audio_core/lle: implement RecvData
2018-12-21 20:49:19 -05:00
Weiyi Wang
7f568a3c19
DSP/HLE: move implementation of RecvData to audio_core, behind common interface
2018-12-21 20:49:19 -05:00
Weiyi Wang
6d51d95d44
audio_core: add teakra and lle interface
2018-12-21 20:49:18 -05:00
Lioncash
90082268dc
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-16 02:44:04 +01:00
Weiyi Wang
296c458e0e
Memory: move GetPhysicalPointer and IsValidPhysicalAddress into class
2018-12-05 20:21:14 -05:00
Weiyi Wang
ec01975549
audio_core: pass in memory reference
...
Because HLE::Source is initialized as an array in the member initializer, it is hard to let it accept the reference on ctor, so it has a second init stage performed by DspHle::Impl::Impl
2018-12-05 20:16:42 -05:00
RoadrunnerWMC
008ef1fd71
DSP: Add a comment about physical address masking
...
See @wwylele's comment on PR 4483 for more details on what causes this behavior.
2018-12-03 12:22:11 -07:00
RoadrunnerWMC
3aff585f32
DSP: Add address mask for physical pointers to audio data buffers
...
Hardware testing indicated that FFFFFFFC is the correct mask for all audio formats (mono and stereo PCM8, mono and stereo PCM16, and ADPCM). This fixes broken audio in Luigi's Mansion: Dark Moon and a few other games.
2018-12-03 01:07:55 -07:00
Weiyi Wang
9458e4d8ec
CoreTiming: wrap into class
2018-11-04 10:26:38 -05:00
Weiyi Wang
b4062abc11
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-26 09:17:44 -04:00
Subv
1d59c8f792
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-10-06 16:55:05 +02:00
Weiyi Wang
7db46da4fc
Merge pull request #4247 from FearlessTobi/port-1314
...
Port yuzu-emu/yuzu#1314 : "audio_core/time_stretch: Silence truncation warnings in Process()"
2018-09-22 12:02:51 -04:00
Lioncash
bcb1aaf05c
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-22 12:55:40 +02:00
Lioncash
553bdb2ae4
audio_core/time_stretch: Silence truncation warnings in Process()
...
The SoundTouch API only accepts uint amount of samples.
2018-09-22 12:52:13 +02:00
Merry
bb9e92c77c
Merge pull request #4194 from MerryMage/audiofifo
...
audio_core: Simplify sink interface
2018-09-21 13:30:51 +01:00
Lioncash
93bd630d40
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-15 15:48:24 +02:00
MerryMage
a6cf2e1f9d
cubeb_sink: Improve logging
2018-09-09 08:37:34 +01:00
MerryMage
675ffc1024
dsp_interface: Move volume control to audio thread
...
We also clamp the linear volume value to [0.0, 1.0].
Do nothing if linear volume is 1.0.
2018-09-08 22:24:51 +01:00
MerryMage
eed55a813e
time_stretch: Simplify audio stretcher
2018-09-08 22:09:26 +01:00
MerryMage
f34711219a
audio_core: Simplify sink interface
2018-09-08 22:09:26 +01:00
Weiyi Wang
7d8f115185
Prefix all size_t with std::
...
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
2018-09-06 16:03:28 -04:00
Merry
b130dd6842
Merge pull request #4161 from FearlessTobi/port-1139
...
Port #1139 from yuzu: "bit_field: Convert ToBool() into explicit operator bool"
2018-09-02 09:53:50 +01:00
fearlessTobi
488694d01f
Replace ToBool() with static_cast()
2018-09-01 15:50:57 +02:00
MerryMage
7daed185cb
cubeb_sink: Protect queue against multithreaded access
2018-08-31 18:44:19 +01:00
Lioncash
29e5dec986
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-23 17:03:09 +02:00
Lioncash
50b58da56c
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-23 17:03:00 +02:00
James Rowe
c35a251d86
Merge pull request #3985 from BreadFish64/fix-warnings
...
core: clean up warnings
2018-08-02 11:14:57 -06:00
James Rowe
14b0435df2
Merge pull request #3994 from FearlessTobi/replace-clamp-functions
...
Remove MathUtil::Clamp and replace it with its std:: counterpart
2018-08-02 11:08:07 -06:00
BreadFish64
74cd98ecad
core: clean up warnings
2018-08-01 14:10:23 -05:00
NarcolepticK
8f70e9a318
service/dsp: Addressed comments about function name and pointer type
2018-07-29 15:18:30 -04:00
fearlessTobi
71e1d6e25d
Fix compile errors
2018-07-26 13:23:25 +02:00
NarcolepticK
b840c63386
service/dsp: Clean up global state
2018-07-24 16:15:37 -04:00
fearlessTobi
7a3e126a4f
Replace MathUtil::Clamp with its std counterpart
2018-07-24 19:08:17 +02:00
James Rowe
2f8c9c8126
Merge pull request #3831 from FearlessTobi/add-volume-slider
...
citra_qt: Add a volume slider
2018-07-18 09:56:47 -06:00
Merry
47d283a1e4
Merge pull request #3909 from MerryMage/rm-SetDevice
...
sink_details: Tidy-up device listing code
2018-07-12 20:49:29 +01:00
MerryMage
7d642b25e9
sink: Make auto device name a constant
2018-07-12 15:56:37 +01:00
NarcolepticK
c39daa3c01
service/dsp: Migrate to ServiceFramework ( #3915 )
...
* service/dsp: Migrate to ServiceFramework
* service/dsp: Removed redundant buffer copy
* service/dsp: Addressed comment about pushing u32 instead of bool
* service/dsp: Fix clang format
* service/dsp: Addressed comment about minimizing global state
* service/dsp: Addressed comments and fixed log call issue
* service/dsp: Fix missed clang format
2018-07-12 17:54:26 +03:00
fearlessTobi
a780f3821e
citra_qt: Add a volume slider
2018-07-03 17:26:50 +02:00
MerryMage
d269beab0d
sink_details: Listing available devices should be separate from sink construction
2018-07-02 14:09:17 +01:00
MerryMage
ce5a5412ae
sink_details: Remove unnecessary lambdas
2018-07-02 13:26:14 +01:00
MerryMage
05fc17b88a
sink: Remove unnecessary SetDevice method
...
Unused, doesn't do anything.
2018-07-02 13:23:40 +01:00
wwylele
0eab948728
reformat all files with clang-format
2018-06-29 16:56:12 +03:00
wwylele
7c5a76e58b
log: replace all NGLOG with LOG
2018-06-29 14:18:07 +03:00
darkf
04139e26bd
cubeb_sink: Skip devices without a name
...
Previously this would crash.
2018-05-31 21:01:48 -05:00
darkf
ce6d9e2e28
externals: Don't build cubeb with tests
2018-05-31 21:01:48 -05:00
darkf
35c43aa293
audio_core: Only include cubeb if it's available
2018-05-31 21:01:48 -05:00
darkf
af73dd45f0
audio_core: Implement a cubeb audio sink
2018-05-31 21:01:48 -05:00
Daniel Lim Wee Soong
38e2b6c8d8
Undo changes to unrelated files and fix formatting
2018-03-25 00:54:40 +08:00
Daniel Lim Wee Soong
df816b5eaf
Address review comments
...
* Convert %x to {:x}
* Convert {0:#010x} to {:#010x}
* Remove `? true : false` statement
* Remove `.c_str()` for strings
2018-03-24 22:25:50 +08:00
Daniel Lim Wee Soong
693b190274
audio_core: Migrate logging macros
...
Follow-up of #3533
Replace prefix of all logging macros from LOG to NGLOG
2018-03-24 21:45:58 +08:00
James Rowe
f61141e86a
Update the entire application to use the new clang format style
2018-03-09 10:54:43 -07:00
MerryMage
90b835758f
decode: Fix PCM8 decoding
...
Signal range is -32767 to 32768, not -127 to 128.
2018-02-25 12:42:21 +00:00
MerryMage
adf9a19095
fixup! audio_core: Remove global state
2018-02-04 22:23:51 +00:00
MerryMage
ab3d53131a
audio_core: Remove global state
2018-02-03 15:15:17 +00:00
wwylele
80ed0f03ac
cmake: add missing ${...} for variables inside generator expressions
2017-12-23 03:00:15 +02:00
Lioncash
ab021d163e
CMakeLists: Derive the source directory grouping from targets themselves
...
Removes the need to store to separate SRC and HEADER variables,
and then construct the target in most cases.
2017-12-11 21:11:52 -05:00
bunnei
16dcec05d1
Merge pull request #3151 from MerryMage/looping-bug
...
Audio/HLE/Source: Fix looped state not updating
2017-11-29 10:43:06 -05:00
B3n30
e9a95b2e7d
CoreTiming: Reworked CoreTiming ( #3119 )
...
* CoreTiming: New CoreTiming; Add Test for CoreTiming
2017-11-25 14:56:57 +01:00
MerryMage
8a5cc14ba4
Audio/HLE/Source: Fix looped state not updating
...
Bugfix for ff280800
.
2017-11-25 11:10:10 +00:00
MerryMage
211cc5e28f
sdl2_sink: Disallow audio device from changing any parameter other than the frequency
...
We currently do not handle the cases when channel number or channel format differ from what we expect.
2017-10-24 14:03:34 +01: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
Kloen Lansfiel
f852369986
SDL: Select audio device ( #2403 )
...
* Initial Commit
Added Device logic to Sinks
Started on UI for selecting devices
Removed redundant import
* Audio Core: Complete Device Switching
Complete the device switching implementation by allowing the output
device to be loaded, changed and saved through the configurations menu.
Worked with the Sink abstraction and tuned the "Device Selection"
configuration so that the Device List is automatically populated when
the Sink is changed.
This hopefully addresses the concerns and recommendations mentioned in
the comments of the PR.
* Clean original implementation.
* Refactor GetSinkDetails
2017-01-25 22:33:26 -05:00
Lioncash
efcab1e918
time_stretch: Add missing #pragma once directive
2016-12-12 19:16:46 -05:00
Lioncash
963aedd8cc
Add all services to the Service namespace
...
Previously there was a split where some of the services were in the
Service namespace and others were not.
2016-12-11 00:07:27 +00:00
MerryMage
cef0f5b5a7
audio_core: SelectSink should default to auto if sink_id is invalid
2016-12-10 01:26:22 +00:00
freiro
5dd31f204a
Improve verbosity of audio errors with SDL_GetError()
2016-11-22 17:28:11 +01:00
Ricardo de Almeida Gonzaga
13d46f6820
Fix typos
2016-10-20 12:26:59 -02:00
Yuri Kunde Schlesner
84fbbe2629
Use negative priorities to avoid special-casing the self-include
2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot
ebdae19fd2
Remove empty newlines in #include blocks.
...
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Yuri Kunde Schlesner
396a8d91a4
Manually tweak source formatting and then re-run clang-format
2016-09-18 21:14:25 -07:00
Emmanuel Gil Peyrot
dc8479928c
Sources: Run clang-format on everything.
2016-09-18 09:38:01 +09:00
MerryMage
991cdda3fc
audio_core: Tweak audio latency
2016-09-07 15:27:32 +01:00
fincs
0bbda3bab4
codec: Fix ADPCM distortion caused by incorrect nibble order
...
Closes #2049 .
Signed-off-by: MerryMage <MerryMage@users.noreply.github.com>
2016-09-03 14:06:25 +01:00
MerryMage
904a319694
audio_core: Add EnableStretching to interface so that one can toggle stretching on and off
2016-08-31 16:56:30 +01:00
MerryMage
0ef4185644
sink: Change EnqueueSamples to take a pointer to a buffer instead of a std::vector
2016-08-31 16:55:10 +01:00
MerryMage
f4d364a60e
DSP/HLE: Audio output
2016-05-19 07:25:26 +01:00
MerryMage
6542c60602
DSP/HLE: Implement mixer processing
2016-05-19 07:24:39 +01:00
Maribel
6f6af6928f
AudioCore: Implement time stretcher ( #1737 )
...
* AudioCore: Implement time stretcher
* fixup! AudioCore: Implement time stretcher
* fixup! fixup! AudioCore: Implement time stretcher
* fixup! fixup! fixup! AudioCore: Implement time stretcher
* fixup! fixup! fixup! fixup! AudioCore: Implement time stretcher
* fixup! fixup! fixup! fixup! fixup! AudioCore: Implement time stretcher
2016-05-14 22:04:03 -04:00
Lioncash
da2400a601
source: Fix missing logging arguments
...
Silences two warnings on OSX.
2016-05-09 09:41:03 -04:00
Alexander Laties
0a31e373f1
fixup simple type conversions where possible
2016-05-07 11:41:55 -04:00
bunnei
c549c36076
Merge pull request #1736 from MerryMage/sdl2-sink
...
AudioCore: SDL2 Sink
2016-05-07 11:08:13 -04:00
MerryMage
920d2cf41d
AudioCore: SDL2 Sink
2016-05-07 11:32:48 +01:00
bunnei
1a6cd7eb4b
HLE: Fix recent DSP change for Visual Studio.
2016-05-07 00:54:31 -04:00
MerryMage
b242bdf945
DSP/HLE: Implement Source processing
2016-05-03 20:58:28 +01:00
MerryMage
4e971f44a2
Audio: Add sink selection to configuration files
2016-04-30 07:41:02 +01:00
MerryMage
8b94422e3e
AudioCore: List of sink types
2016-04-30 07:39:48 +01:00
MerryMage
7d106eff10
AudioCore: Implement NullSink
2016-04-30 07:39:37 +01:00
bunnei
73624b4721
Merge pull request #1726 from MerryMage/read-write-region
...
AudioCore: CurrentRegion() -> ReadRegion(), WriteRegion()
2016-04-29 12:18:26 -04:00
MerryMage
22995bd9bf
AudioCore: CurrentRegion() -> ReadRegion(), WriteRegion()
2016-04-29 16:32:29 +01:00
bunnei
4c235955cf
Merge pull request #1723 from MerryMage/audio-interp
...
AudioCore: Implement interpolation
2016-04-29 10:43:20 -04:00
MerryMage
111275bfbd
AudioCore: Implement interpolation
2016-04-29 08:05:41 +01:00
bunnei
fda578e19d
Merge pull request #1727 from MerryMage/minor-commit
...
AudioCore: Move samples_per_frame and num_sources into hle/common.h
2016-04-28 09:47:08 -04:00
bunnei
2f76dc6758
Merge pull request #1722 from MerryMage/soundtouch
...
Externals: Add soundtouch
2016-04-28 09:45:15 -04:00
MerryMage
27ce3b3f51
Externals: Add soundtouch
2016-04-28 13:33:14 +01:00
MerryMage
dda9ffe790
AudioCore: Move samples_per_frame and num_sources into hle/common.h
2016-04-28 11:22:40 +01:00
MerryMage
a47f149e07
AudioCore: Hack to prevent regressions: Trigger Binary pipe interrupt every audio frame
2016-04-27 06:35:10 +01:00
MerryMage
ff6db69c60
DSP_DSP: Updated interrupt implementation
2016-04-27 06:35:06 +01:00
MerryMage
555907ce8d
DSP/Pipe: There are 8 pipes
2016-04-25 07:50:53 +01:00
MerryMage
2a99464ef1
DSP: Implement audio filters (simple, biquad)
2016-03-28 15:51:00 +01:00
MerryMage
efd1c3f8c3
DSP: Implement audio codecs (PCM8, PCM16, ADPCM)
2016-03-24 03:46:59 +00:00
MerryMage
004991d79e
DSP: Implement Pipe 2
...
Pipe 2 is a DSP pipe that is used to initialize both the DSP hardware (the
application signals to the DSP to initialize) and the application (the DSP
provides the memory location of structures in the shared memory region).
2016-03-06 21:25:44 +00:00
MerryMage
8b00954ec7
AudioCore: Skeleton Implementation
...
This commit:
* Adds a new subproject, audio_core.
* Defines structures that exist in DSP shared memory.
* Hooks up various other parts of the emulator into audio core.
This sets the foundation for a later HLE DSP implementation.
2016-02-21 13:13:52 +00:00