diff options
Diffstat (limited to 'src/server/PortAudioDriver.hpp')
-rw-r--r-- | src/server/PortAudioDriver.hpp | 75 |
1 files changed, 32 insertions, 43 deletions
diff --git a/src/server/PortAudioDriver.hpp b/src/server/PortAudioDriver.hpp index 679223ad..6c7bfb9e 100644 --- a/src/server/PortAudioDriver.hpp +++ b/src/server/PortAudioDriver.hpp @@ -19,30 +19,20 @@ #include "Driver.hpp" #include "EnginePort.hpp" -#include "ingen_config.h" #include "types.hpp" -#include "ingen/URI.hpp" -#include "lv2/atom/forge.h" -#include "raul/Semaphore.hpp" +#include <raul/Semaphore.hpp> +#include <boost/intrusive/options.hpp> +#include <boost/intrusive/slist.hpp> #include <portaudio.h> #include <atomic> -#include <cstddef> #include <cstdint> #include <memory> -namespace Raul { class Path; } +namespace ingen::server { -namespace ingen { - -class Atom; - -namespace server { - -class Buffer; -class DuplexPort; class Engine; class FrameTimer; class RunContext; @@ -51,7 +41,7 @@ class PortAudioDriver : public Driver { public: explicit PortAudioDriver(Engine& engine); - ~PortAudioDriver(); + ~PortAudioDriver() override; bool attach(); @@ -59,37 +49,37 @@ public: void deactivate() override; EnginePort* create_port(DuplexPort* graph_port) override; - EnginePort* get_port(const Raul::Path& path) override; + EnginePort* get_port(const raul::Path& path) override; - void rename_port(const Raul::Path& old_path, const Raul::Path& new_path) override; - void port_property(const Raul::Path& path, const URI& uri, const Atom& value) override; - void add_port(RunContext& context, EnginePort* port) override; - void remove_port(RunContext& context, EnginePort* port) override; + void rename_port(const raul::Path& old_path, const raul::Path& new_path) override; + void port_property(const raul::Path& path, const URI& uri, const Atom& value) override; + void add_port(RunContext& ctx, EnginePort* port) override; + void remove_port(RunContext& ctx, EnginePort* port) override; void register_port(EnginePort& port) override; void unregister_port(EnginePort& port) override; - void append_time_events(RunContext& context, Buffer& buffer) override {} + void append_time_events(RunContext& ctx, Buffer& buffer) override {} SampleCount frame_time() const override; int real_time_priority() override { return 80; } SampleCount block_length() const override { return _block_length; } - size_t seq_size() const override { return _seq_size; } + uint32_t seq_size() const override { return _seq_size; } SampleCount sample_rate() const override { return _sample_rate; } private: friend class PortAudioPort; - inline static int - pa_process_cb(const void* inputs, - void* outputs, - unsigned long nframes, - const PaStreamCallbackTimeInfo* time, - PaStreamCallbackFlags flags, - void* handle) { - return ((PortAudioDriver*)handle)->process_cb( - inputs, outputs, nframes, time, flags); + static int pa_process_cb(const void* inputs, + void* outputs, + unsigned long nframes, + const PaStreamCallbackTimeInfo* time, + PaStreamCallbackFlags flags, + void* handle) + { + return static_cast<PortAudioDriver*>(handle)->process_cb( + inputs, outputs, nframes, time, flags); } int process_cb(const void* inputs, @@ -98,12 +88,12 @@ private: const PaStreamCallbackTimeInfo* time, PaStreamCallbackFlags flags); - void pre_process_port(RunContext& context, + void pre_process_port(RunContext& ctx, EnginePort* port, const void* inputs, void* outputs); - void post_process_port(RunContext& context, + void post_process_port(RunContext& ctx, EnginePort* port, const void* inputs, void* outputs); @@ -116,19 +106,18 @@ protected: Ports _ports; PaStreamParameters _inputParameters; PaStreamParameters _outputParameters; - Raul::Semaphore _sem; + raul::Semaphore _sem{0U}; std::unique_ptr<FrameTimer> _timer; - PaStream* _stream; - size_t _seq_size; + PaStream* _stream{nullptr}; + uint32_t _seq_size{4096U}; uint32_t _block_length; - uint32_t _sample_rate; - uint32_t _n_inputs; - uint32_t _n_outputs; - std::atomic<bool> _flag; - bool _is_activated; + uint32_t _sample_rate{48000U}; + uint32_t _n_inputs{0U}; + uint32_t _n_outputs{0U}; + std::atomic<bool> _flag{false}; + bool _is_activated{false}; }; -} // namespace server -} // namespace ingen +} // namespace ingen::server #endif // INGEN_ENGINE_PORTAUDIODRIVER_HPP |