summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-09-20 00:58:25 +0000
committerCarl Hetherington <carl@carlh.net>2010-09-20 00:58:25 +0000
commita2885a430bbb69a72f901d227cacce979f121020 (patch)
tree191ae276dbbd2e456a0d8edabccd19fee486572c /libs
parenta212e7eec999e696dde6d4747b783fb6098bdb47 (diff)
Add progress bar to strip silence dialogue. Fixes #3103.
git-svn-id: svn://localhost/ardour2/branches/3.0@7809 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/filter.h3
-rw-r--r--libs/ardour/ardour/midi_stretch.h2
-rw-r--r--libs/ardour/ardour/rb_effect.h2
-rw-r--r--libs/ardour/ardour/region.h3
-rw-r--r--libs/ardour/ardour/reverse.h2
-rw-r--r--libs/ardour/ardour/strip_silence.h2
-rw-r--r--libs/ardour/midi_stretch.cc2
-rw-r--r--libs/ardour/rb_effect.cc2
-rw-r--r--libs/ardour/region.cc4
-rw-r--r--libs/ardour/reverse.cc2
-rw-r--r--libs/ardour/strip_silence.cc11
-rw-r--r--libs/ardour/wscript1
12 files changed, 24 insertions, 12 deletions
diff --git a/libs/ardour/ardour/filter.h b/libs/ardour/ardour/filter.h
index 697e19539e..9d69a513ac 100644
--- a/libs/ardour/ardour/filter.h
+++ b/libs/ardour/ardour/filter.h
@@ -28,13 +28,14 @@ namespace ARDOUR {
class Region;
class Session;
+class Progress;
class Filter {
public:
virtual ~Filter() {}
- virtual int run (boost::shared_ptr<ARDOUR::Region>) = 0;
+ virtual int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0) = 0;
std::vector<boost::shared_ptr<ARDOUR::Region> > results;
protected:
diff --git a/libs/ardour/ardour/midi_stretch.h b/libs/ardour/ardour/midi_stretch.h
index 9dbfbca2bd..90c75bbc18 100644
--- a/libs/ardour/ardour/midi_stretch.h
+++ b/libs/ardour/ardour/midi_stretch.h
@@ -29,7 +29,7 @@ class MidiStretch : public Filter {
MidiStretch (ARDOUR::Session&, TimeFXRequest&);
~MidiStretch ();
- int run (boost::shared_ptr<ARDOUR::Region>);
+ int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0);
private:
TimeFXRequest& _request;
diff --git a/libs/ardour/ardour/rb_effect.h b/libs/ardour/ardour/rb_effect.h
index e4b1c00034..84c9bce53c 100644
--- a/libs/ardour/ardour/rb_effect.h
+++ b/libs/ardour/ardour/rb_effect.h
@@ -31,7 +31,7 @@ class RBEffect : public Filter {
RBEffect (ARDOUR::Session&, TimeFXRequest&);
~RBEffect ();
- int run (boost::shared_ptr<ARDOUR::Region>);
+ int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0);
private:
TimeFXRequest& tsr;
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index b78699d906..0ae325d124 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -68,6 +68,7 @@ namespace Properties {
class Playlist;
class Filter;
class ExportSpecification;
+class Progress;
enum RegionEditState {
EditChangesNothing = 0,
@@ -205,7 +206,7 @@ class Region
void set_locked (bool yn);
void set_position_locked (bool yn);
- int apply (Filter&);
+ int apply (Filter &, Progress* progress = 0);
virtual uint64_t read_data_count() const { return _read_data_count; }
diff --git a/libs/ardour/ardour/reverse.h b/libs/ardour/ardour/reverse.h
index 0831e8184b..edc72ce707 100644
--- a/libs/ardour/ardour/reverse.h
+++ b/libs/ardour/ardour/reverse.h
@@ -29,7 +29,7 @@ class Reverse : public Filter {
Reverse (ARDOUR::Session&);
~Reverse ();
- int run (boost::shared_ptr<ARDOUR::Region>);
+ int run (boost::shared_ptr<ARDOUR::Region>, Progress *);
};
} /* namespace */
diff --git a/libs/ardour/ardour/strip_silence.h b/libs/ardour/ardour/strip_silence.h
index 217f6b3d8a..e77aa7111c 100644
--- a/libs/ardour/ardour/strip_silence.h
+++ b/libs/ardour/ardour/strip_silence.h
@@ -27,7 +27,7 @@ class StripSilence : public Filter {
public:
StripSilence (Session &, double, nframes_t, nframes_t);
- int run (boost::shared_ptr<ARDOUR::Region>);
+ int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0);
private:
double _threshold; ///< silence threshold, in dBFS
diff --git a/libs/ardour/midi_stretch.cc b/libs/ardour/midi_stretch.cc
index dedae6acb1..ee1ccc31ae 100644
--- a/libs/ardour/midi_stretch.cc
+++ b/libs/ardour/midi_stretch.cc
@@ -42,7 +42,7 @@ MidiStretch::~MidiStretch ()
}
int
-MidiStretch::run (boost::shared_ptr<Region> r)
+MidiStretch::run (boost::shared_ptr<Region> r, Progress* progress)
{
SourceList nsrcs;
char suffix[32];
diff --git a/libs/ardour/rb_effect.cc b/libs/ardour/rb_effect.cc
index 60764c1220..32a2d056d6 100644
--- a/libs/ardour/rb_effect.cc
+++ b/libs/ardour/rb_effect.cc
@@ -60,7 +60,7 @@ RBEffect::~RBEffect ()
}
int
-RBEffect::run (boost::shared_ptr<Region> r)
+RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
{
boost::shared_ptr<AudioRegion> region = boost::dynamic_pointer_cast<AudioRegion> (r);
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index 07d27faee9..98f48ab80a 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -1535,9 +1535,9 @@ Region::get_parent() const
}
int
-Region::apply (Filter& filter)
+Region::apply (Filter& filter, Progress* progress)
{
- return filter.run (shared_from_this());
+ return filter.run (shared_from_this(), progress);
}
diff --git a/libs/ardour/reverse.cc b/libs/ardour/reverse.cc
index 10fce58442..675ccb4c52 100644
--- a/libs/ardour/reverse.cc
+++ b/libs/ardour/reverse.cc
@@ -42,7 +42,7 @@ Reverse::~Reverse ()
}
int
-Reverse::run (boost::shared_ptr<Region> r)
+Reverse::run (boost::shared_ptr<Region> r, Progress* progress)
{
SourceList nsrcs;
SourceList::iterator si;
diff --git a/libs/ardour/strip_silence.cc b/libs/ardour/strip_silence.cc
index a7d7ab073f..a7308b06ab 100644
--- a/libs/ardour/strip_silence.cc
+++ b/libs/ardour/strip_silence.cc
@@ -24,6 +24,7 @@
#include "ardour/region_factory.h"
#include "ardour/session.h"
#include "ardour/dB.h"
+#include "ardour/progress.h"
using namespace ARDOUR;
@@ -41,7 +42,7 @@ StripSilence::StripSilence (Session & s, double threshold, nframes_t minimum_len
}
int
-StripSilence::run (boost::shared_ptr<Region> r)
+StripSilence::run (boost::shared_ptr<Region> r, Progress* progress)
{
results.clear ();
@@ -88,6 +89,9 @@ StripSilence::run (boost::shared_ptr<Region> r)
in_silence = false;
}
+ int n = 0;
+ int const N = silence.size ();
+
while (s != silence.end()) {
framecnt_t interval_duration;
@@ -119,6 +123,11 @@ StripSilence::run (boost::shared_ptr<Region> r)
++s;
end = s->first;
in_silence = !in_silence;
+
+ if (progress) {
+ progress->set_progress (float (n) / N);
+ }
+ ++n;
}
return 0;
diff --git a/libs/ardour/wscript b/libs/ardour/wscript
index a7bc811999..a2c4898053 100644
--- a/libs/ardour/wscript
+++ b/libs/ardour/wscript
@@ -148,6 +148,7 @@ libardour_sources = [
'port_set.cc',
'process_thread.cc',
'processor.cc',
+ 'progress.cc',
'quantize.cc',
'rc_configuration.cc',
'recent_sessions.cc',