audio_core: Only perform audio stretching if below full speed. (#7201)

This commit is contained in:
Steveice10 2023-11-26 12:06:59 -08:00 committed by GitHub
parent c0ecdb689d
commit 670e9936a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 83 additions and 52 deletions

View file

@ -31,7 +31,10 @@ using InterruptType = Service::DSP::InterruptType;
namespace AudioCore {
DspHle::DspHle()
: DspHle(Core::System::GetInstance().Memory(), Core::System::GetInstance().CoreTiming()) {}
: DspHle(Core::System::GetInstance(), Core::System::GetInstance().Memory(),
Core::System::GetInstance().CoreTiming()) {}
DspHle::DspHle(Core::System& system) : DspHle(system, system.Memory(), system.CoreTiming()) {}
template <class Archive>
void DspHle::serialize(Archive& ar, const unsigned int) {
@ -442,8 +445,8 @@ void DspHle::Impl::AudioTickCallback(s64 cycles_late) {
core_timing.ScheduleEvent(audio_frame_ticks - cycles_late, tick_event);
}
DspHle::DspHle(Memory::MemorySystem& memory, Core::Timing& timing)
: impl(std::make_unique<Impl>(*this, memory, timing)) {}
DspHle::DspHle(Core::System& system, Memory::MemorySystem& memory, Core::Timing& timing)
: DspInterface(system), impl(std::make_unique<Impl>(*this, memory, timing)) {}
DspHle::~DspHle() = default;
u16 DspHle::RecvData(u32 register_number) {

View file

@ -14,6 +14,10 @@
#include "core/hle/service/dsp/dsp_dsp.h"
#include "core/memory.h"
namespace Core {
class Timing;
}
namespace Memory {
class MemorySystem;
}
@ -22,7 +26,8 @@ namespace AudioCore {
class DspHle final : public DspInterface {
public:
explicit DspHle(Memory::MemorySystem& memory, Core::Timing& timing);
explicit DspHle(Core::System& system);
explicit DspHle(Core::System& system, Memory::MemorySystem& memory, Core::Timing& timing);
~DspHle();
u16 RecvData(u32 register_number) override;