professionalize peak-meters
[ardour.git] / libs / ardour / ardour / audioengine.h
index ed1ddb8609c7eb71a1e4cbe36eee14ef53023e71..330de4e285a29017a8de8f718462b263f8cc0acc 100644 (file)
@@ -104,6 +104,7 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        bool           in_process_thread ();
        uint32_t       process_thread_count ();
 
+       int            backend_reset_requested();
        void           request_backend_reset();
        void           request_device_list_update();
        void           launch_device_control_app();
@@ -186,6 +187,12 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        PBD::Signal0<void> Running;
        PBD::Signal0<void> Stopped;
 
+       /* these two are emitted when a device reset is initiated/finished
+        */
+    
+       PBD::Signal0<void> DeviceResetStarted;
+       PBD::Signal0<void> DeviceResetFinished;
+
        static AudioEngine* instance() { return _instance; }
        static void destroy();
        void died ();
@@ -225,6 +232,16 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
 
        LatencyMeasurement measuring_latency () const { return _measuring_latency; }
 
+       /* These two are used only in builds where SILENCE_AFTER_SECONDS was
+        * set. BecameSilent will be emitted when the audioengine goes silent.
+        * reset_silence_countdown() can be used to reset the silence
+        * countdown, whose duration will be reduced to half of its previous
+        * value.
+        */
+       
+       PBD::Signal0<void> BecameSilent;
+       void reset_silence_countdown ();
+       
   private:
        AudioEngine ();
 
@@ -276,16 +293,16 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        void do_reset_backend();
        void do_devicelist_update();
 
-       void meter_thread ();
-       void start_metering_thread ();
-       void stop_metering_thread ();
-
-       static gint      m_meter_exit;
-
        typedef std::map<std::string,AudioBackendInfo*> BackendMap;
        BackendMap _backends;
        AudioBackendInfo* backend_discover (const std::string&);
        void drop_backend ();
+
+#ifdef SILENCE_AFTER
+       framecnt_t _silence_countdown;
+       uint32_t   _silence_hit_cnt;
+#endif 
+
 };
        
 } // namespace ARDOUR