diff options
-rw-r--r-- | libs/ardour/plugin_insert.cc | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 41c65ba4fe..b6e3671ff2 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -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; |