59 std::lock_guard<std::mutex> lock(
s_mutex);
77 std::lock_guard<std::mutex> lock(
s_mutex);
79 error<std::runtime_error>(
82 std::source_location::current(),
83 "Cannot set API preference after RtAudio instance created");
98 std::lock_guard<std::mutex> lock(
s_mutex);
100 error<std::runtime_error>(
103 std::source_location::current(),
104 "Attempted to open a second RtAudio stream when one is already open");
118 std::lock_guard<std::mutex> lock(
s_mutex);
131 std::lock_guard<std::mutex> lock(
s_mutex);
150 std::lock_guard<std::mutex> lock(
s_mutex);
160 }
catch (
const RtAudioErrorType& e) {
164 std::source_location::current(),
165 "Error during RtAudio cleanup: {}",
static std::optional< RtAudio::Api > s_preferred_api
Preferred RtAudio API, if specified.
static bool is_stream_open()
Checks if an audio stream is currently active.
static void mark_stream_closed()
Deregisters an active audio stream from the system.
static void set_preferred_api(RtAudio::Api api)
Sets the preferred audio API before instance creation.
static std::unique_ptr< RtAudio > s_instance
Singleton instance of the RtAudio driver (nullptr until first access)
static bool s_stream_open
Stream state flag to enforce exclusive stream ownership.
static RtAudio * get_instance()
Provides access to the RtAudio instance with lazy initialization.
static std::mutex s_mutex
Synchronization primitive for thread-safe access to the singleton.
static void mark_stream_open()
Registers an active audio stream in the system.
RtAudioSingleton()=default
Private constructor prevents direct instantiation.
static void cleanup()
Releases all audio system resources.
Thread-safe global access point for audio system resources.
@ AudioBackend
Audio processing backend (RtAudio, JACK, ASIO)
@ Core
Core engine, backend, subsystems.