From 491523d6b7e45687cd9bbab8eb35d4224a2e4939 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 28 Sep 2017 06:04:58 +0200 Subject: Add Processor API for global session-transport alignment These are only relevant for DiskIO Processors, however more use-cases may present themselves (e.g. LuaDSP) --- libs/ardour/ardour/processor.h | 10 ++++++++++ libs/ardour/processor.cc | 2 ++ 2 files changed, 12 insertions(+) diff --git a/libs/ardour/ardour/processor.h b/libs/ardour/ardour/processor.h index 3ba0730ba3..8dfc1494d3 100644 --- a/libs/ardour/ardour/processor.h +++ b/libs/ardour/ardour/processor.h @@ -76,6 +76,12 @@ class LIBARDOUR_API Processor : public SessionObject, public Automatable, public virtual void set_output_latency (samplecnt_t cnt) { _output_latency = cnt; } samplecnt_t output_latency () const { return _output_latency; } + virtual void set_capture_offset (samplecnt_t cnt) { _capture_offset = cnt; } + samplecnt_t capture_offset () const { return _capture_offset; } + + virtual void set_playback_offset (samplecnt_t cnt) { _playback_offset = cnt; } + samplecnt_t playback_offset () const { return _playback_offset; } + virtual int set_block_size (pframes_t /*nframes*/) { return 0; } virtual bool requires_fixed_sized_buffers() const { return false; } @@ -155,8 +161,12 @@ protected: ProcessorWindowProxy *_window_proxy; PluginPinWindowProxy *_pinmgr_proxy; SessionObject* _owner; + // relative to route samplecnt_t _input_latency; samplecnt_t _output_latency; + // absolute alignment to session i/o + samplecnt_t _capture_offset; + samplecnt_t _playback_offset; }; } // namespace ARDOUR diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index 06a7c9676f..03510130a2 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -70,6 +70,8 @@ Processor::Processor(Session& session, const string& name) , _owner (0) , _input_latency (0) , _output_latency (0) + , _capture_offset (0) + , _playback_offset (0) { } -- cgit v1.2.3