optimize peak calculation of silent buffers
[ardour.git] / libs / ardour / meter.cc
index 5310fd747bbf5e0ac0e4bb592122e13c94b61eff..ec736fef69c91cbf50b417ddad19f966e160be09 100644 (file)
@@ -107,7 +107,11 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr
 
        // Meter audio in to the rest of the peaks
        for (uint32_t i = 0; i < n_audio; ++i, ++n) {
-               _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]);
+               if (bufs.get_audio(i).silent()) {
+                       _peak_signal[n] = .0f;
+               } else {
+                       _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]);
+               }
                if (_meter_type & (MeterKrms | MeterK20 | MeterK14 | MeterK12)) {
                        _kmeter[i]->process(bufs.get_audio(i).data(), nframes);
                }