Commit graph

191 commits

Author SHA1 Message Date
zhupengfei
3c6765e87c
core: Properly std::move things around 2020-02-27 16:55:09 +08:00
liushuyu
cff00f38c5
Implements fdk_aac decoder (#4764)
* audio_core: dsp_hle: implements fdk_aac decoder

* audio_core: dsp_hle: clean up and add comments

* audio_core: dsp_hle: move fdk include to cpp file

* audio_core: dsp_hle: detects broken fdk_aac...

... and refuses to initialize if that's the case

* audio_core: dsp_hle: fdk_aac: address comments...

... and rebase commits

* fdk_decoder: move fdk header to cpp file
2020-02-23 11:01:21 +01:00
James Rowe
5fd1ff08d7
Merge pull request #5024 from jroweboy/temp-hle-audio-fix
Prevent out of memory errors when the game passes in an improper length value
2020-01-21 15:30:20 -07:00
James Rowe
e53a2ac411 Reenable AAC FFMPEG decoding
Simple cut/paste issue where initialized is only set to true when the
emulation attempts to init the Binary Pipe, but we used it to test if
the FFMPEG decoder was valid and disabled it if it wasn't. Just return
the value of have_ffmpeg_dl instead so when dynamic loading is added
it'll still work.
2019-12-16 19:23:43 -07:00
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
vvanelslande
e1e136d72f service/mic: actually use the specified device 2019-11-11 17:15:10 -05:00
zhupengfei
f8b3950829
CMake: separate options for FFmpeg decoder/dumper
Separate options are now provided for FFmpeg AAC audio decoder and FFmpeg video dumper. This allows users to configure Citra with greater freedom.

Also, previously for Linux builds, AAC decoder is accidentally enabled along with the dumper, which could potentially cause patent issues (?). This commit fixes it by only enabling video dumper.
2019-08-20 14:45:39 +08:00
zhupengfei
cf2c354fb9
CMake, CI: Add FFmpeg library dependency 2019-08-14 09:27:03 +08:00
zhupengfei
fff570012f
audio_core: Dump audio frames and samples
This is tested to work with all three current methods - HLE, LLE and multithread LLE.
2019-08-13 19:28:03 +08:00
Weiyi Wang
3dbd1fd4a8 audio_core/cubeb: silent signed/unsigned comparison warning 2019-07-14 14:30:24 -04: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
James Rowe
f4d0bdd09a Destroy the callback after the stream is destroyed
Prevents a crash on close if the callback was running on a different
thread.
2019-04-05 14:16:55 -06:00
Vamsi Krishna
aedf5a84b0
Merge pull request #4671 from jroweboy/mic4
Microphone support
2019-03-20 23:12:38 +05:30
James Rowe
b4d538468d Change resampling s16 -> u8 to respect aliasing rules 2019-03-20 09:31:03 -06:00
James Rowe
9739e2b6fd Support signed 8bit pcm in cubeb input. Address review 2019-03-17 22:52:03 -06:00
James Rowe
f5df13eb24 Remove global state and add mic hot swapping 2019-03-06 20:59:58 -07:00
James Rowe
182d672c15 Add ifdef around cubeb for android. Address a few review comments 2019-03-06 20:03:22 -07:00
James Rowe
5c61d53047 Fix compiler error 2019-03-06 11:30:23 -07:00
James Rowe
ba4dfe4217 Increase mic stream volume to max in case the users mic is set low for some reason 2019-03-06 11:17:32 -07:00
James Rowe
5f532c2560 Address review comments 2019-03-06 11:16:43 -07:00
James Rowe
c669aa8d55 Rest of the owl 2019-03-04 23:07:05 -07:00
fearlessTobi
5c9e327ff3 Fix 2019-03-04 23:07:05 -07:00
James Rowe
7fccc995ce Initial Mic setup 2019-03-04 23:06:42 -07:00
Lioncash
d354a2ee3b audio_core/codec: Resolve truncation warnings within DecodeADPCM
The assignments here were performing an implicit truncation from int to
s16. Make it explicit that this is desired behavior.
2019-03-02 14:06:30 +01: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 8f591d3b85714383196fd21e744a7eed5302ff0a
2019-02-09 11:56:51 +01:00