James Rowe
87facaa2e2
Prevent out of memory errors when the game passes in an improper length value
...
HACK
In Luigi's Mansion Dark Moon in HLE audio, the game mysteriously passes
in an extremely large value for length, which without any checks, causes
HLE audio to allocate an extremely large buffer.
This value seemingly is caused by some other HLE audio feature is missing,
and Luigi's Mansion subtracts two values to get a length, without
checking for overflow first. This appears to be caused by an incorrect
HLE audio emulation, as its fixed entirely by only changing to LLE. As
such, further investigation is required, but in the meantime, completely
eating up our users RAM is unacceptable.
2019-12-14 18:18:59 -07:00
James Rowe
337ac73915
Improve aac decoder selection
2019-12-08 16:18:39 -07:00
James Rowe
b395efe804
Dynamically load Media Foundation
2019-12-08 13:54:27 -07:00
liushuyu
8021361bb4
audio_core: dsp_hle: use better f32 to s16...
...
... conversion by clamping and clipping sample to [-1,1] and use
different masks for negative and positive samples
2019-05-01 15:58:26 -06:00
Weiyi Wang
8f2bd97277
Merge pull request #4655 from tgsm/gcc-version
...
Remove GCC version checks
2019-02-22 16:21:21 -05:00
tgsm
433ab35e7e
Remove GCC version checks
...
Citra can't be compiled using GCC <7 because of required C++17 support, so these version checks don't need to exist anymore.
2019-02-19 16:39:34 -05:00
tgsm
a400e49338
audio_core: use nested namespaces
2019-02-17 23:41:48 -05:00
liushuyu
a4ba35fe3a
audio_core: hle: mf: lint
2019-02-13 15:15:11 -07:00
liushuyu
671ac441e9
audio_core: hle: mf: move transform initializer to ctor
2019-02-13 14:32:14 -07:00
liushuyu
6178cc08b7
audio_core: hle: mf: conform to RAII as possible
2019-02-13 14:08:34 -07:00
liushuyu
f0e041e27a
audio_core: hle: mf: correctly handle stream change
2019-02-09 16:49:48 -07:00
liushuyu
01e0902fa4
audio_core: hle: mf: fix a memory accessing issue
2019-02-09 13:55:54 -07:00
liushuyu
6281660844
audio_core: hle: mf: address yet another batch of reviews
2019-02-09 13:55:42 -07:00
liushuyu
ab1f47ed15
audio_core: hle: mf: make DetectMediaType return a struct
2019-02-09 11:57:36 +01:00
liushuyu
168f2ee79a
audio_core: mf: make initialize function return smart pointer
2019-02-09 11:57:36 +01:00
liushuyu
c91f5029ff
audio_core: hle: mf: fix a regression...
...
... where the sample copying logic is incorrect due to the wrong usage
of `std::array`
2019-02-09 11:57:36 +01:00
liushuyu
6332e57069
audio_core: hle: mf: return values as std::optional
2019-02-09 11:57:36 +01:00
liushuyu
25fa10327b
audio_core: hle: mf: use object proxy
2019-02-09 11:57:36 +01:00
liushuyu
26b3b41788
audio_core: hle: mf: wrap enum in class
2019-02-09 11:57:36 +01:00
liushuyu
633f02b9b2
audio_core: hle: mf: avoid name conflicts
2019-02-09 11:57:36 +01:00
liushuyu
452ac7b874
audio_core: hle: mf: use more enum
2019-02-09 11:57:36 +01:00
liushuyu
be764e4f88
audio_core: hle: mf: multiple fixes...
...
... more smart pointers and re-arrange code
2019-02-09 11:57:36 +01:00
liushuyu
4bc6bfd51f
audio_core: hle: mf: re-arrange comments
2019-02-09 11:57:36 +01:00
liushuyu
972b527374
audio_core: hle: mf: cleanup headers
2019-02-09 11:57:36 +01:00
liushuyu
2c40ef2a90
audio_core: hle: mf: rename functions
2019-02-09 11:57:36 +01:00
liushuyu
ea8a1f8754
Media Foundation Memory Fix
...
* audio_core: hle: mf: more smart pointers
* audio_core: hle: mf: fix memory leaks
* audio_core: hle: mf: even more smart pointers
2019-02-09 11:57:36 +01:00
liushuyu
10f876653d
audio_core: hle: mf: transition to use smart pointers
2019-02-09 11:56:51 +01:00
liushuyu
bee5ba3e33
audio_core: hle: mf: fix a regression...
...
... an introduction in 8f591d3b85
2019-02-09 11:56:51 +01:00
liushuyu
06316be8a7
audio_core: hle: mf: minor fix
2019-02-09 11:56:51 +01:00
liushuyu
c03861c2d9
audio_core: hle: mf: address another batch of reviews from @B3N30
2019-02-09 11:56:51 +01:00
liushuyu
7f5b54fda4
audio_core: hle: mf: address reviews from @B3N30
2019-02-09 11:56:51 +01:00
liushuyu
11e277149c
audio_core: hle: fix compile
2019-02-09 11:56:51 +01:00
B3N30
80b4dd21d2
audio_core: dsp_hle: add Media Foundation decoder...
...
* appveyor: switch to Media Foundation API
* Travis CI MinGW build needs an update with the container image
2019-02-09 11:56:51 +01:00
B3N30
1581dea6de
more reviews addressed
2019-02-09 11:55:12 +01:00
liushuyu
8fe3e37df5
audio_core: fix msvc include issue
2019-02-09 11:55:12 +01:00
B3N30
bd9984b5f8
Addressed reviews
2019-02-09 11:55:12 +01:00
B3N30
847003cc1c
FFmpegDL: Added external_dlls folder to user folder
...
AACDecoder: addressed reviews
2019-02-09 11:52:31 +01:00
B3N30
45b5de7a18
Fixup: Merge conflict with dsp lle
2019-02-09 11:52:31 +01:00
B3N30
c521f3b7d6
CoreAudio::HLE: Add FFmpeg aac decoder
2019-02-09 11:52:31 +01:00
Weiyi Wang
104829ae58
remove all occurance of specifying endianness inside BitField
...
This commit it automatically generated by command in zsh:
sed -i -- 's/BitField<\(.*\)_le>/BitField<\1>/g' **/*(D.)
BitField is now aware to endianness and default to little endian. It expects a value representation type without storage specification for its template parameter.
2019-01-28 22:09:43 -05:00
Weiyi Wang
6f6ffceec4
audio_core/hle,lle: implement UnloadComponent
2018-12-21 20:49:21 -05:00
Weiyi Wang
4add509b20
audio_core/hle: move implementation of LoadComponent
2018-12-21 20:49:21 -05:00
Weiyi Wang
c9736b3300
audio_core/hle,lle: implement SetSemaphore
2018-12-21 20:49:20 -05:00
Weiyi Wang
14eb3561de
audio_core/hle: move implementation of RecvDataIsReady
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
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
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
fearlessTobi
488694d01f
Replace ToBool() with static_cast()
2018-09-01 15:50:57 +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
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
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
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
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
MerryMage
8a5cc14ba4
Audio/HLE/Source: Fix looped state not updating
...
Bugfix for ff280800
.
2017-11-25 11:10:10 +00: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
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
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
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
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
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
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
MerryMage
dda9ffe790
AudioCore: Move samples_per_frame and num_sources into hle/common.h
2016-04-28 11:22:40 +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
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