Merge with 2.0-ongoing R2988
[ardour.git] / libs / ardour / ardour / analyser.h
1 #ifndef __ardour_analyser_h__
2 #define __ardour_analyser_h__
3
4 #include <glibmm/thread.h>
5 #include <boost/shared_ptr.hpp>
6
7 namespace ARDOUR {
8
9 class AudioFileSource;
10 class Source;
11 class TransientDetector;
12
13 class Analyser {
14
15   public:
16         Analyser();
17         ~Analyser ();
18
19         static void init ();
20         static void queue_source_for_analysis (boost::shared_ptr<Source>, bool force);
21         static void work ();
22         
23   private:
24         static Analyser* the_analyser;
25         static Glib::StaticMutex analysis_queue_lock;
26         static Glib::Cond* SourcesToAnalyse;
27         static std::list<boost::weak_ptr<Source> > analysis_queue;
28         
29         static void analyse_audio_file_source (boost::shared_ptr<AudioFileSource>);
30 };
31
32
33 }
34
35 #endif /* __ardour_analyser_h__ */