summaryrefslogtreecommitdiffstats
path: root/src/audio_core/audio_renderer.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Decouple audio processing and run at variable rateKelebek12021-06-271-0/+6
| | | | | | 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.
* hle: service: Acquire and release a lock on requests.bunnei2020-12-291-7/+1
| | | | - This makes it such that we can safely access service members from CoreTiming thread.
* Merge pull request #5000 from lioncash/audio-errorbunnei2020-12-031-1/+2
|\ | | | | audio_core: Make shadowing and unused parameters errors
| * audio_core: Make shadowing and unused parameters errorsLioncash2020-12-031-1/+2
| | | | | | | | Moves the audio code closer to enabling warnings as errors in general.
* | audio_core: Remove temp_mix_bufferChloe Marcec2020-11-281-1/+0
|/ | | | It's unused and doesn't need to be initialized
* audren: Make use of nodiscard, rework downmixing, release all buffersChloe Marcec2020-11-171-13/+7
| | | | | | 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
* audio_core: Remove unnecessary inclusionsLioncash2020-09-251-1/+0
| | | | | Same behavior, but removes header dependencies where they don't need to be.
* audio_core: Apollo Part 1, AudioRenderer refactorDavid Marcec2020-07-251-204/+20
|
* audren: Implement RendererInfoDavid Marcec2020-06-131-3/+10
| | | | Fixes ZLA softlock
* audio_renderer: Better voice mixing and 6 channel downmixingDavid Marcec2020-05-111-0/+10
| | | | Supersedes #3738 and #3321
* audio_renderer: Preliminary BehaviorInfo (#3736)David2020-04-211-1/+4
| | | | | | | | | | | | | * 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.bunnei2020-04-171-3/+3
| | | | - helpful to disambiguate Kernel::Memory namespace.
* audio_core: Accept Audren REV8FearlessTobi2020-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.
* core: Prepare various classes for memory read/write migrationLioncash2019-11-271-2/+8
| | | | | | | | | | 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.
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. (#3154)bunnei2019-11-251-3/+2
| | | | | | * 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.
* Added frame_count for REV7 audio rendererDavid Marcec2019-09-201-11/+14
| | | | Added framecount
* Clang formatDavid Marcec2019-07-121-1/+2
|
* Addressed issuesDavid Marcec2019-07-121-1/+1
|
* "AudioRenderer" thread should have a unique nameDavid Marcec2019-07-121-1/+1
| | | | 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.
* audio_core/audio_renderer: Name previously unknown parameters of AudioRendererParameterLioncash2019-02-271-6/+8
| | | | | | | | | 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.
* core_timing: Convert core timing into a classLioncash2019-02-161-1/+5
| | | | | | | | | | | 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: Port all current usages of Event to Readable/WritableEventZach Hilman2018-11-291-3/+4
|
* audio_core/audio_renderer: Fix typo in AuxInfo member nameLioncash2018-11-131-1/+1
|
* EffectOutStatus padding is now in hexDavid Marcec2018-10-091-1/+1
|
* Fixups for softlockDavid Marcec2018-10-071-1/+1
|
* Fixed smo softlockDavid Marcec2018-10-071-0/+49
|
* stream: Preserve enum class type in GetState()Lioncash2018-09-241-1/+1
| | | | | | Preserves the meaning/type-safetiness of the stream state instead of making it an opaque u32. This makes it usable for other things outside of the service HLE context.
* Added audren:u#GetAudioRendererStateDavid Marcec2018-09-231-0/+1
|
* audio_renderer: Replace includes with forward declarations where applicableLioncash2018-09-171-39/+12
| | | | | | | | | Avoids including unnecessary headers within the audio_renderer.h header, lessening the likelihood of needing to rebuild source files including this header if they ever change. Given std::vector allows forward declaring contained types, we can move VoiceState to the cpp file and hide the implementation entirely.
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-4/+4
|
* audio_renderer: Rename AudioOut instance to audio_outMerryMage2018-09-081-1/+1
|
* audio_core: InterpolateMerryMage2018-08-131-0/+2
|
* Added GetAudioRendererSampleRate, GetAudioRendererSampleCount & GetAudioRendererMixBufferCountDavid Marcec2018-08-121-1/+4
| | | | GetAudioRendererSampleRate is set as a "STUB" as a game could check if the sample rate it sent and the sample rate it wants don't match. Just a thought of something which could happen so keeping it as stub for the mean time
* audio_core: Implement audren_u audio playback.bunnei2018-08-051-0/+206