summaryrefslogtreecommitdiff
path: root/src/audio_core (follow)
Commit message (Collapse)AuthorAgeFilesLines
* fix logic error & scale sample volume based on voice volumeGravatar David Marcec2020-05-111-7/+9
|
* pass by const ref insteadGravatar David Marcec2020-05-111-8/+7
|
* audio_renderer: Better voice mixing and 6 channel downmixingGravatar David Marcec2020-05-113-11/+96
| | | | Supersedes #3738 and #3321
* audio_renderer: Preliminary BehaviorInfo (#3736)Gravatar David2020-04-206-11/+242
| | | | | | | | | | | | | * audio_renderer: Preliminary BehaviorInfo * clang format * Fixed IsRevisionSupported * fixed IsValidRevision * Fixed logic error & spelling errors & crash * Addressed issues
* core: memory: Move to Core::Memory namespace.Gravatar bunnei2020-04-172-10/+11
| | | | - helpful to disambiguate Kernel::Memory namespace.
* audio_core: Accept Audren REV8Gravatar FearlessTobi2020-03-231-1/+1
| | | | | | According to Ryujinx, REV8 only added changes on Performance buffer and Wavebuffer DSP command generation. As we don't support any of those, we can just increment the revision number for now.
* cubeb_sink: Don't discard other channels when performing downmixingGravatar FearlessTobi2020-03-081-3/+17
| | | | | | | | Previously, when performing downmixing, we would discard all channels except the left and right one. This implementation respects them when mixing down to Stereo. It is taken from this document: http://www.atsc.org/wp-content/uploads/2015/03/A52-201212-17.pdf. Fixes Luigis Mansion 3 cutscene and Bayonetta audio.
* audio_core: interpolate: Improvements to fix audio crackling.Gravatar bunnei2020-02-222-23/+38
| | | | | - Fixes audio crackling in Crash Team Racing Nitro-Fueled, Super Mario Odyssey, and others. - Addresses followup issues from #3310.
* audio_core: interpolate: Fix include for climits (Linux build break).Gravatar bunnei2020-02-221-1/+1
|
* audio_core: Switch to a faster interpolation techniqueGravatar FearlessTobi2020-01-242-48/+159
|
* core/memory: Migrate over Read{8, 16, 32, 64, Block} to the Memory classGravatar Lioncash2019-11-261-8/+9
| | | | | | | | | | | | | | With all of the trivial parts of the memory interface moved over, we can get right into moving over the bits that are used. Note that this does require the use of GetInstance from the global system instance to be used within hle_ipc.cpp and the gdbstub. This is fine for the time being, as they both already rely on the global system instance in other functions. These will be removed in a change directed at both of these respectively. For now, it's sufficient, as it still accomplishes the goal of de-globalizing the memory code.
* core: Prepare various classes for memory read/write migrationGravatar Lioncash2019-11-262-13/+21
| | | | | | | | | | Amends a few interfaces to be able to handle the migration over to the new Memory class by passing the class by reference as a function parameter where necessary. Notably, within the filesystem services, this eliminates two ReadBlock() calls by using the helper functions of HLERequestContext to do that for us.
* core_timing: Use better reference tracking for EventType. (#3159)Gravatar bunnei2019-11-262-13/+14
| | | | | | | * core_timing: Use better reference tracking for EventType. - Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects. - Removes need for unique names - we won't be using this for save states anyways.
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵Gravatar bunnei2019-11-242-4/+3
| | | | | | | | kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
* Used revision 5 instead of 7, marked constexpr as staticGravatar David Marcec2019-09-211-2/+2
|
* Added frame_count for REV7 audio rendererGravatar David Marcec2019-09-202-11/+24
| | | | Added framecount
* Clang formatGravatar David Marcec2019-07-132-2/+4
|
* Addressed issuesGravatar David Marcec2019-07-132-2/+2
|
* "AudioRenderer" thread should have a unique nameGravatar David Marcec2019-07-132-3/+4
| | | | Creating multiple "AudioRenderer" threads cause the previous thread to be overwritten. The thread will name be renamed to AudioRenderer-InstanceX, where X is the current instance number.
* addressed issueGravatar David Marcec2019-07-081-1/+1
|
* audren: Only manage wave buffers with a sizeGravatar David Marcec2019-07-011-3/+5
| | | | | | We shouldn't be incrementing if wave buffers are empty. They are considered invalid/unused wave buffers. This fixes the issue of certain sounds looping when they shouldn't
* Merge pull request #2583 from FernandoS27/core-timing-safeGravatar bunnei2019-06-301-1/+1
|\ | | | | Core_Timing: Make core_timing threadsafe by default.
| * Core_Timing: Make core_timing threadsafe by default.Gravatar Fernando Sahmkow2019-06-161-1/+1
| | | | | | | | | | | | The old implementation had faulty Threadsafe methods where events could be missing. This implementation unifies unsafe/safe methods and makes core timing thread safe overall.
* | CleanupGravatar David Marcec2019-06-161-1/+1
| |
* | Impl'd IsUserAccountSwitchLocked, SetAudioOutVolume, GetAudioOutVolume & ↵Gravatar David Marcec2019-06-162-3/+14
|/ | | | | | Partial impl of GetAccumulatedSuspendedTickChangedEvent IPC-100 was changed to InitializeApplicationInfoOld instead of InitializeApplicationInfo. IPC-150 makes an indentical call to IPC-100 however does extra processing. They should not have the same name as it's quite confusing to debug.
* core/core_timing_util: Use std::chrono types for specifying time unitsGravatar Lioncash2019-06-041-1/+3
| | | | | Makes the interface more type-safe and consistent in terms of return values.
* core/core_timing: Make callback parameters consistentGravatar Lioncash2019-03-241-1/+1
| | | | | | | | | | | In some cases, our callbacks were using s64 as a parameter, and in other cases, they were using an int, which is inconsistent. To make all callbacks consistent, we can just use an s64 as the type for late cycles, given it gets rid of the need to cast internally. While we're at it, also resolve some signed/unsigned conversions that were occurring related to the callback registration.
* audio_core/cubeb_sink: Convert _MSC_VER ifdefs to _WIN32Gravatar Lioncash2019-03-092-4/+4
| | | | This behavior also needs to be visible for MinGW builds as well.
* audio_core/cubeb_sink: Ensure COM is initialized on Windows prior to calling ↵Gravatar Lioncash2019-02-272-0/+19
| | | | | | | cubeb_init cubeb now requires that COM explicitly be initialized on the thread prior to calling cubeb_init.
* audio_core/audio_renderer: Name previously unknown parameters of ↵Gravatar Lioncash2019-02-271-6/+8
| | | | | | | | | | | AudioRendererParameter Provides names for previously unknown entries (aside from the two u8 that appear to be padding bytes, and a single word that also appears to be reserved or padding). This will be useful in subsequent changes when unstubbing behavior related to the audio renderer services.
* audio_core/cubeb_sink: Initialize CubebSinkStream's last_frame data memberGravatar Lioncash2019-02-251-1/+1
| | | | | Ensures that all member variables are initialized in a deterministic manner across the board.
* audio_core/cubeb_sink: Add override specifier to destructorGravatar Lioncash2019-02-251-1/+1
| | | | | CubebSinkStream inherits from a base class with a virtual destructor, so override can be appended to CubebSinkStream's destructor.
* audio_core/cubeb_sink: Resolve variable shadowing warnings in SamplesInQueueGravatar Lioncash2019-02-251-2/+2
| | | | | | The name of the parameter was shadowing the member variable of the same name. Instead, alter the name of the parameter to prevent said shadowing.
* audio_core/codec: Resolve truncation warnings within DecodeADPCMGravatar Lioncash2019-02-251-2/+2
| | | | | The assignments here were performing an implicit truncation from int to s16. Make it explicit that this is desired behavior.
* audio_core/buffer: Make const and non-const getter for samples consistentGravatar Lioncash2019-02-162-2/+2
| | | | This way proper const/non-const selection can occur.
* core_timing: Convert core timing into a classGravatar Lioncash2019-02-156-17/+28
| | | | | | | | | | | Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
* core_timing: Rename CoreTiming namespace to Core::TimingGravatar Lioncash2019-02-122-14/+15
| | | | | | Places all of the timing-related functionality under the existing Core namespace to keep things consistent, rather than having the timing utilities sitting in its own completely separate namespace.
* dsp_interface: fix sound being played while volume is 0Gravatar fearlessTobi2019-01-261-1/+1
| | | | | According to documentation, if the argument of std::exp is zero, one is returned. However we want the return value to be also zero in this case so no audio is played.
* audio_core: remove unnecessary spaces on commentsGravatar Otávio Pace2019-01-141-2/+2
|
* audio_core: Convert LOG_CRITICAL + UNREACHABLE over to ↵Gravatar Lioncash2018-12-283-10/+6
| | | | | | | | UNIMPLEMENTED/UNIMPLEMENTED_MSG These two macros being used in tandem were used prior to the introduction of UNIMPLEMENTED and UNIMPLEMENTED_MSG. This provides equivalent behavior, just with less typing/reading involved.
* Merge pull request #1902 from lioncash/audioGravatar bunnei2018-12-146-32/+55
|\ | | | | audio_core: Make g_sink_details internally linked
| * audio_core: Make g_sink_details internally linkedGravatar Lioncash2018-12-136-32/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Avoid (expensive) audio interpolation when sample rates already matchGravatar heapo2018-12-062-4/+8
|/
* core: Port all current usages of Event to Readable/WritableEventGravatar Zach Hilman2018-11-292-5/+6
|
* audio_core/audio_renderer: Fix typo in AuxInfo member nameGravatar Lioncash2018-11-131-1/+1
|
* microprofile: Drop ReleaseActiveBuffer scope.Gravatar Markus Wick2018-11-061-4/+0
| | | | | This was created with the unfinished resampling PR in mind. As the resampling is now on the audio thread, we don't need to care about this here any more.
* time_stretch: Switch to values of CitraGravatar fearlessTobi2018-10-291-3/+3
|
* cubeb_sink: ignore null-name device when selectingGravatar Weiyi Wang2018-10-271-1/+2
| | | | 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
* time_stretch: Remove unused m_channel_count member variableGravatar Lioncash2018-10-242-3/+1
| | | | This is only stored to, but never read from.
* EffectOutStatus padding is now in hexGravatar David Marcec2018-10-091-1/+1
|