Commit graph

21 commits

Author SHA1 Message Date
Paul Davis
903c3ec5a0 rename BufferSet::get* to BufferSet::get_available*
This tries to make it clear what the BufferSet limit semantics really are
2019-09-26 18:39:56 -06:00
Robin Gareus
4abb907a82
Use ProcessThread::init () to set up denormal protection
Modifying the MXCSR register only affects the current thread.
2019-09-09 18:48:16 +02:00
Robin Gareus
a22f918d9d
Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
0c57199a6c Add a scratch buffer for automation.
Useful as temporary buffer: This allows a controllable to
get a master's automation-curve and combine it with its own
(gain, trim, send) automation buffer.
2017-06-03 13:54:55 +02:00
Robin Gareus
5f7d50a690 NO-OP: whitespace 2017-06-03 00:19:35 +02:00
Robin Gareus
0954efffd3 add "no-inplace" buffers.
When allowing to cross-connect plugin-ports, inplace processing can
no longer be used. We need a complete set of independent input and
output buffers.

Since scratch and silent buffers are used by the various plugin
implementations we cannot re-use them in the PluginInsert.
Besides we need a complete BufferSet which can hold both: ins + outs.
2016-03-26 00:40:51 +01:00
Robin Gareus
517467f297 prepare trim automation 2015-04-25 21:24:58 +02:00
Robin Gareus
4dc74ae2ea use zeroed scratch buffers for "silent" plugin runs
Plugins rewrite the buffer data in-place and some plugins
can produce output even when fed with silence.

Hence, during a PluginInsert::silence() run a plugin can
inject data into the "silent" buffers which causes side-effects.

Kudos to Chris 'oofus' Goddard for finding this issue.
2013-08-01 00:35:24 +02:00
Robin Gareus
1c08b910f0 another amend to 00f26394a9 2013-07-31 14:21:40 +02:00
Robin Gareus
e8dc221191 fix stupid copy/paste error in 00f26394a9 2013-07-31 02:00:31 +02:00
Robin Gareus
00f26394a9 use dedicated buffers for route (and track)
"scratch buffers are by definition scratch and their contents are undefined at all times"
"silent buffers are by definition all-zero and should not be used for real data"

But track & route were using those for actual data; plugins (which may run
in the same thread and may get the same buffers) use them for scratch thereby
overwriting real data.

In particular get_silent_buffers() (used by LadspaPlugin::connect_and_run)
clears the buffer which can holds real data:
e.g. via  Route::passthru_silence() -> plugin1 -> plugin2 (clears output of plugin1)
2013-07-30 16:55:33 +02:00
Paul Davis
3cd8138a41 convert from Glib:: to Glib::Threads for all thread-related API
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25 17:48:55 +00:00
Paul Davis
223a5e217a extra insurance against ProcessThread::init() being called more than once
git-svn-id: svn://localhost/ardour2/branches/3.0@12737 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-16 02:53:50 +00:00
Carl Hetherington
c40437430a Make send automation work (#4734).
git-svn-id: svn://localhost/ardour2/branches/3.0@12650 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-06-11 10:42:30 +00:00
David Robillard
6fa6514cfd Remove over 500 unnecessary includes (including 54 of session.h).
It's slightly possible that this causes trivial build failures on different
configurations, but otherwise shouldn't cause any problems (i.e. no actual
changes other than include/naming/namespace stuff).  I deliberately avoided
removing libardour-config.h since this can mysteriously break things, though a
few of those do seem to be unnecessary.

This commit only targets includes of ardour/*.h.  There is also a very large
number of unnecessary includes of stuff in gtk2_ardour; tackling that should
also give a big improvement in build time when things are modified.


git-svn-id: svn://localhost/ardour2/branches/3.0@12420 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24 06:09:29 +00:00
Paul Davis
cfaf6ff7e3 remove unused Glib::Thread* from ProcessThread
git-svn-id: svn://localhost/ardour2/branches/3.0@11696 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-15 13:39:06 +00:00
Paul Davis
8771e00fab a better fix for the silent buffer issue: whenever we run a plugin, mark all the buffers passed to it as non-silent. a few plugin APIs allow the plugin to indicate whether or not it generated silence or not, but we ignore this for now (and possibly forever)
git-svn-id: svn://localhost/ardour2/branches/3.0@10385 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-01 21:28:16 +00:00
Paul Davis
ddff1489f2 force re-silence of buffers in ProcessThread::get_silent_buffers(), an interim fix before actually finding out why the buffers are marked silent when they were not
git-svn-id: svn://localhost/ardour2/branches/3.0@10383 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-11-01 21:10:46 +00:00
David Robillard
a473d630eb Fix broken whitespace. I'd apologize for the compile times if it was my fault :D
git-svn-id: svn://localhost/ardour2/branches/3.0@9654 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01 16:50:12 +00:00
Paul Davis
a83157de45 remove babbling torrent of debug output
git-svn-id: svn://localhost/ardour2/branches/3.0@6889 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-13 21:05:59 +00:00
Paul Davis
3ea10b38bb substantive change: use the JACK wait API and provide "thread buffers" separately from session in preparation for parallelization. lots of debug output at present. If using JACK1, requires a very current version of JACK1 SVN (0.119.0)
git-svn-id: svn://localhost/ardour2/branches/3.0@6888 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-04-13 20:48:33 +00:00