summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-28 06:04:58 +0200
committerRobin Gareus <robin@gareus.org>2017-09-29 05:03:48 +0200
commit491523d6b7e45687cd9bbab8eb35d4224a2e4939 (patch)
treee439914a298b5ac12fb3d13da6a7959e122b046e /libs
parent69b9ad6bccf95dbff9bf32f0f362c75d90918275 (diff)
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)
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/processor.h10
-rw-r--r--libs/ardour/processor.cc2
2 files changed, 12 insertions, 0 deletions
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)
{
}