From cc23c369619ccc672dbc32993dd686a96cf76103 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 1 Apr 2012 14:57:57 +0000 Subject: Tidy up slightly; fix reads off the end of the data array (#4797). git-svn-id: svn://localhost/ardour2/branches/3.0@11772 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/transient_detector.cc | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'libs/ardour/transient_detector.cc') diff --git a/libs/ardour/transient_detector.cc b/libs/ardour/transient_detector.cc index cf8557de82..2e416dc0e7 100644 --- a/libs/ardour/transient_detector.cc +++ b/libs/ardour/transient_detector.cc @@ -125,23 +125,17 @@ TransientDetector::cleanup_transients (AnalysisFeatureList& t, float sr, float g void TransientDetector::update_positions (Readable* src, uint32_t channel, AnalysisFeatureList& positions) { - Plugin::FeatureSet features; + int const buff_size = 1024; + int const step_size = 64; - Sample* data = 0; - - int buff_size = 1024; - int step_size = 64; - - data = new Sample[buff_size]; + Sample* data = new Sample[buff_size]; AnalysisFeatureList::iterator i = positions.begin(); while (i != positions.end()) { - framecnt_t to_read; - /* read from source */ - to_read = buff_size; + framecnt_t const to_read = buff_size; if (src->read (data, (*i) - buff_size, to_read, channel) != to_read) { break; @@ -149,18 +143,18 @@ TransientDetector::update_positions (Readable* src, uint32_t channel, AnalysisFe // Simple heuristic for locating approx correct cut position. - for (int j = 0; j < buff_size;){ + for (int j = 0; j < (buff_size - step_size); ) { - Sample s = abs (data[j]); - Sample s2 = abs (data[j + step_size]); + Sample const s = abs (data[j]); + Sample const s2 = abs (data[j + step_size]); - if ((s2 - s) > threshold){ + if ((s2 - s) > threshold) { //cerr << "Thresh exceeded. Moving pos from: " << (*i) << " to: " << (*i) - buff_size + (j + 16) << endl; (*i) = (*i) - buff_size + (j + 24); break; } - j = j + step_size; + j += step_size; } ++i; -- cgit v1.2.3