audio_core: Add realtime audio
This commit is contained in:
parent
67a5570617
commit
77d3fbc618
@ -17,6 +17,7 @@
|
||||
#elif HAVE_FDK
|
||||
#include "audio_core/hle/fdk_decoder.h"
|
||||
#endif
|
||||
#include <algorithm>
|
||||
#include "audio_core/hle/common.h"
|
||||
#include "audio_core/hle/decoder.h"
|
||||
#include "audio_core/hle/hle.h"
|
||||
@ -30,6 +31,7 @@
|
||||
#include "common/logging/log.h"
|
||||
#include "core/core.h"
|
||||
#include "core/core_timing.h"
|
||||
#include "core/settings.h"
|
||||
|
||||
SERIALIZE_EXPORT_IMPL(AudioCore::DspHle)
|
||||
|
||||
@ -448,7 +450,11 @@ void DspHle::Impl::AudioTickCallback(s64 cycles_late) {
|
||||
|
||||
// Reschedule recurrent event
|
||||
Core::Timing& timing = Core::System::GetInstance().CoreTiming();
|
||||
timing.ScheduleEvent(audio_frame_ticks - cycles_late, tick_event);
|
||||
const double time_scale =
|
||||
Settings::values.enable_realtime_audio
|
||||
? std::clamp(Core::System::GetInstance().GetLastFrameTimeScale(), 1.0, 3.0)
|
||||
: 1.0;
|
||||
timing.ScheduleEvent(audio_frame_ticks / time_scale - cycles_late, tick_event);
|
||||
}
|
||||
|
||||
DspHle::DspHle(Memory::MemorySystem& memory) : impl(std::make_unique<Impl>(*this, memory)) {}
|
||||
|
@ -339,6 +339,10 @@ PerfStats::Results System::GetAndResetPerfStats() {
|
||||
: PerfStats::Results{};
|
||||
}
|
||||
|
||||
double System::GetLastFrameTimeScale() {
|
||||
return perf_stats->GetLastFrameTimeScale();
|
||||
}
|
||||
|
||||
void System::Reschedule() {
|
||||
if (!reschedule_pending) {
|
||||
return;
|
||||
|
@ -168,6 +168,8 @@ public:
|
||||
|
||||
PerfStats::Results GetAndResetPerfStats();
|
||||
|
||||
double GetLastFrameTimeScale();
|
||||
|
||||
/**
|
||||
* Gets a reference to the emulated CPU.
|
||||
* @returns A reference to the emulated CPU.
|
||||
|
@ -102,6 +102,7 @@ void LogSettings() {
|
||||
LogSetting("Audio_EnableDspLleMultithread", Settings::values.enable_dsp_lle_multithread);
|
||||
LogSetting("Audio_OutputEngine", Settings::values.sink_id);
|
||||
LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching);
|
||||
LogSetting("Audio_EnableRealTime", Settings::values.enable_realtime_audio);
|
||||
LogSetting("Audio_OutputDevice", Settings::values.audio_device_id);
|
||||
LogSetting("Audio_InputDeviceType", static_cast<int>(Settings::values.mic_input_type));
|
||||
LogSetting("Audio_InputDevice", Settings::values.mic_input_device);
|
||||
|
@ -193,6 +193,7 @@ struct Values {
|
||||
bool enable_dsp_lle_multithread;
|
||||
std::string sink_id;
|
||||
bool enable_audio_stretching;
|
||||
bool enable_realtime_audio;
|
||||
std::string audio_device_id;
|
||||
float volume;
|
||||
MicInputType mic_input_type;
|
||||
|
@ -162,6 +162,8 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) {
|
||||
AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", Settings::values.sink_id);
|
||||
AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching",
|
||||
Settings::values.enable_audio_stretching);
|
||||
AddField(Telemetry::FieldType::UserConfig, "Audio_EnableRealTime",
|
||||
Settings::values.enable_realtime_audio);
|
||||
AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit);
|
||||
AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor",
|
||||
Settings::values.resolution_factor);
|
||||
|
Loading…
x
Reference in New Issue
Block a user