From d76545289512e6710c2c5511fb6cb01f720826fa Mon Sep 17 00:00:00 2001 From: Nanako <469449812@qq.com> Date: Fri, 22 Mar 2024 15:07:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E7=A6=81=E7=94=A8RtAudio,=20?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E5=AE=83=E5=9C=A8=E8=8E=B7=E5=8F=96=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E6=97=B6=E6=AD=BB=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/application/application.h | 5 ++- core/audio/device/audio_device_manager.cpp | 38 +++++++++++----------- core/audio/device/audio_device_manager.h | 12 +++---- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/core/application/application.h b/core/application/application.h index 3164184..a61618f 100644 --- a/core/application/application.h +++ b/core/application/application.h @@ -1,4 +1,5 @@ #pragma once +#include #include class renderer; @@ -8,9 +9,7 @@ class application; class CORE_API application { public: - application() { - } - + application() = default; virtual ~application() = default; application(const application&) = delete; diff --git a/core/audio/device/audio_device_manager.cpp b/core/audio/device/audio_device_manager.cpp index 83f9516..787b267 100644 --- a/core/audio/device/audio_device_manager.cpp +++ b/core/audio/device/audio_device_manager.cpp @@ -31,7 +31,7 @@ void audio_device_manager::start() { if (input_params_.deviceId != 0) { 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 { @@ -86,23 +86,23 @@ void audio_device_manager::render_thread() { const uint32_t frames = get_buffer_size(); const uint32_t rate = get_sample_rate(); - while (audio_.isStreamRunning()) { - const uint32_t milliseconds = 1.f / (rate / (frames / 4)) * 1000; - - g_audio_thread_hub.process_messages(); - if (render_buffer_.Num() >= render_buffer_size_) { - std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); - continue; - } - g_midi_sequencer.process(rate, frames); - g_mixer.reset(); - g_plugin_host_manager.process(frames); - g_mixer.process(frames); - - const auto& master_headers = master->buffer.get_headers_vector(); - for (const auto element: master_headers) { - render_buffer_.Push(element, frames); - } - } + // while (audio_.isStreamRunning()) { + // const uint32_t milliseconds = 1.f / (rate / (frames / 4)) * 1000; + // + // g_audio_thread_hub.process_messages(); + // if (render_buffer_.Num() >= render_buffer_size_) { + // std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); + // continue; + // } + // g_midi_sequencer.process(rate, frames); + // g_mixer.reset(); + // g_plugin_host_manager.process(frames); + // g_mixer.process(frames); + // + // const auto& master_headers = master->buffer.get_headers_vector(); + // for (const auto element: master_headers) { + // render_buffer_.Push(element, frames); + // } + // } spdlog::info("port_audio render thread stopped"); } diff --git a/core/audio/device/audio_device_manager.h b/core/audio/device/audio_device_manager.h index c8c0940..d623e83 100644 --- a/core/audio/device/audio_device_manager.h +++ b/core/audio/device/audio_device_manager.h @@ -11,14 +11,14 @@ public: 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 [[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 [[nodiscard]] uint32_t get_input_channel_count() const; - CORE_API [[nodiscard]] uint32_t get_output_channel_count() const; + CORE_API uint32_t get_input_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); protected: @@ -36,7 +36,7 @@ private: RtAudio::StreamParameters output_params_ = {}; RtAudio::StreamOptions options_ = {}; uint32_t sample_rate_ = 44100; - RtAudio audio_; + // RtAudio audio_; }; DEFINE_SINGLETON_INSTANCE(audio_device_manager)