临时禁用RtAudio, 因为它在获取设备时死循环

This commit is contained in:
Nanako 2024-03-22 15:07:32 +08:00
parent e136589a19
commit d765452895
3 changed files with 27 additions and 28 deletions

View File

@ -1,4 +1,5 @@
#pragma once #pragma once
#include <memory>
#include <string> #include <string>
class renderer; class renderer;
@ -8,9 +9,7 @@ class application;
class CORE_API application { class CORE_API application {
public: public:
application() { application() = default;
}
virtual ~application() = default; virtual ~application() = default;
application(const application&) = delete; application(const application&) = delete;

View File

@ -31,7 +31,7 @@ void audio_device_manager::start() {
if (input_params_.deviceId != 0) { if (input_params_.deviceId != 0) {
input_params = &input_params_; input_params = &input_params_;
} }
audio_.openStream(&output_params_, input_params, RTAUDIO_FLOAT32, get_sample_rate(), &options_.numberOfBuffers, &rt_audio_callback, this, &options_); // audio_.openStream(&output_params_, input_params, RTAUDIO_FLOAT32, get_sample_rate(), &options_.numberOfBuffers, &rt_audio_callback, this, &options_);
} }
uint32_t audio_device_manager::get_sample_rate() const { uint32_t audio_device_manager::get_sample_rate() const {
@ -86,23 +86,23 @@ void audio_device_manager::render_thread() {
const uint32_t frames = get_buffer_size(); const uint32_t frames = get_buffer_size();
const uint32_t rate = get_sample_rate(); const uint32_t rate = get_sample_rate();
while (audio_.isStreamRunning()) { // while (audio_.isStreamRunning()) {
const uint32_t milliseconds = 1.f / (rate / (frames / 4)) * 1000; // const uint32_t milliseconds = 1.f / (rate / (frames / 4)) * 1000;
//
g_audio_thread_hub.process_messages(); // g_audio_thread_hub.process_messages();
if (render_buffer_.Num() >= render_buffer_size_) { // if (render_buffer_.Num() >= render_buffer_size_) {
std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); // std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds));
continue; // continue;
} // }
g_midi_sequencer.process(rate, frames); // g_midi_sequencer.process(rate, frames);
g_mixer.reset(); // g_mixer.reset();
g_plugin_host_manager.process(frames); // g_plugin_host_manager.process(frames);
g_mixer.process(frames); // g_mixer.process(frames);
//
const auto& master_headers = master->buffer.get_headers_vector(); // const auto& master_headers = master->buffer.get_headers_vector();
for (const auto element: master_headers) { // for (const auto element: master_headers) {
render_buffer_.Push(element, frames); // render_buffer_.Push(element, frames);
} // }
} // }
spdlog::info("port_audio render thread stopped"); spdlog::info("port_audio render thread stopped");
} }

View File

@ -11,14 +11,14 @@ public:
void start(); void start();
CORE_API [[nodiscard]] const char* get_name() override { return "audio_device_manager"; } CORE_API const char* get_name() override { return "audio_device_manager"; }
CORE_API [[nodiscard]] uint32_t get_sample_rate() const; CORE_API uint32_t get_sample_rate() const;
CORE_API void set_sample_rate(uint32_t sample_rate); CORE_API void set_sample_rate(uint32_t sample_rate);
CORE_API [[nodiscard]] uint32_t get_buffer_size() const; CORE_API uint32_t get_buffer_size() const;
CORE_API void set_buffer_size(int buffer_size); CORE_API void set_buffer_size(int buffer_size);
CORE_API [[nodiscard]] uint32_t get_input_channel_count() const; CORE_API uint32_t get_input_channel_count() const;
CORE_API [[nodiscard]] uint32_t get_output_channel_count() const; CORE_API uint32_t get_output_channel_count() const;
int stream_callback(float** output, float** input, unsigned long frame_count, double stream_time, RtAudioStreamStatus status); int stream_callback(float** output, float** input, unsigned long frame_count, double stream_time, RtAudioStreamStatus status);
protected: protected:
@ -36,7 +36,7 @@ private:
RtAudio::StreamParameters output_params_ = {}; RtAudio::StreamParameters output_params_ = {};
RtAudio::StreamOptions options_ = {}; RtAudio::StreamOptions options_ = {};
uint32_t sample_rate_ = 44100; uint32_t sample_rate_ = 44100;
RtAudio audio_; // RtAudio audio_;
}; };
DEFINE_SINGLETON_INSTANCE(audio_device_manager) DEFINE_SINGLETON_INSTANCE(audio_device_manager)