+ for (Plugins::iterator i = _plugins.begin(); i != _plugins.end(); ++i) {
+ (*i)->connect_and_run(bufs, in_map, out_map, nframes, offset);
+ for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
+ in_map.offset_to(*t, natural_input_streams().get(*t));
+ out_map.offset_to(*t, natural_output_streams().get(*t));
+ }
+ }
+
+ if (collect_signal_nframes > 0) {
+ // 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),
+ collect_signal_nframes,
+ _signal_analysis_collected_nframes); // offset is for target buffer
+ }
+
+ _signal_analysis_collected_nframes += collect_signal_nframes;
+ assert(_signal_analysis_collected_nframes <= _signal_analysis_collect_nframes_max);
+
+ if (_signal_analysis_collected_nframes == _signal_analysis_collect_nframes_max) {
+ _signal_analysis_collect_nframes_max = 0;
+ _signal_analysis_collected_nframes = 0;
+
+ AnalysisDataGathered(&_signal_analysis_inputs,
+ &_signal_analysis_outputs);
+ }
+ }