mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-07 22:25:46 +01:00
Make sure plugin analysis buffers are the proper length. sigh.
git-svn-id: svn://localhost/ardour2/branches/3.0@5065 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
cf4ec6323a
commit
05c597d0ee
1 changed files with 14 additions and 6 deletions
|
|
@ -309,12 +309,16 @@ PluginInsert::connect_and_run (BufferSet& bufs, nframes_t nframes, nframes_t off
|
|||
//std::cerr << "collect input, bufs " << bufs.count().n_audio() << " count, " << bufs.available().n_audio() << " available" << std::endl;
|
||||
//std::cerr << " streams " << input_streams().n_audio() << std::endl;
|
||||
//std::cerr << "filling buffer with " << collect_signal_nframes << " frames at " << _signal_analysis_collected_nframes << std::endl;
|
||||
|
||||
_signal_analysis_inputs.set_count(input_streams());
|
||||
|
||||
for (uint32_t i = 0; i < input_streams().n_audio(); ++i) {
|
||||
_signal_analysis_inputs.get_audio(i).read_from(
|
||||
bufs.get_audio(i),
|
||||
collect_signal_nframes,
|
||||
_signal_analysis_collected_nframes); // offset is for target buffer
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
|
||||
|
|
@ -329,6 +333,9 @@ PluginInsert::connect_and_run (BufferSet& bufs, nframes_t nframes, nframes_t off
|
|||
// collect output
|
||||
//std::cerr << " output, bufs " << bufs.count().n_audio() << " count, " << bufs.available().n_audio() << " available" << std::endl;
|
||||
//std::cerr << " streams " << output_streams().n_audio() << std::endl;
|
||||
|
||||
_signal_analysis_outputs.set_count(output_streams());
|
||||
|
||||
for (uint32_t i = 0; i < output_streams().n_audio(); ++i) {
|
||||
_signal_analysis_outputs.get_audio(i).read_from(
|
||||
bufs.get_audio(i),
|
||||
|
|
@ -546,10 +553,12 @@ PluginInsert::configure_io (ChanCount in, ChanCount out)
|
|||
// buffers and the analyser makes sure it gets enough data for the
|
||||
// analysis window
|
||||
session().ensure_buffer_set (_signal_analysis_inputs, in);
|
||||
_signal_analysis_inputs.set_count (in);
|
||||
//_signal_analysis_inputs.set_count (in);
|
||||
|
||||
session().ensure_buffer_set (_signal_analysis_outputs, out);
|
||||
_signal_analysis_outputs.set_count (out);
|
||||
//_signal_analysis_outputs.set_count (out);
|
||||
|
||||
std::cerr << "set counts to i" << in.n_audio() << "/o" << out.n_audio() << std::endl;
|
||||
|
||||
return Processor::configure_io (in, out);
|
||||
}
|
||||
|
|
@ -990,10 +999,9 @@ void
|
|||
PluginInsert::collect_signal_for_analysis(nframes_t nframes)
|
||||
{
|
||||
// called from outside the audio thread, so this should be safe
|
||||
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
|
||||
_session.ensure_buffer_set(_signal_analysis_inputs, input_streams());
|
||||
_session.ensure_buffer_set(_signal_analysis_outputs, output_streams());
|
||||
}
|
||||
// only do audio as analysis is (currently) only for audio plugins
|
||||
_signal_analysis_inputs.ensure_buffers( DataType::AUDIO, input_streams().n_audio(), nframes);
|
||||
_signal_analysis_outputs.ensure_buffers( DataType::AUDIO, output_streams().n_audio(), nframes);
|
||||
|
||||
_signal_analysis_collected_nframes = 0;
|
||||
_signal_analysis_collect_nframes_max = nframes;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue