Add and use dB/linear conversion functions.
[dcpomatic.git] / src / lib / hints.cc
index ad81e8d59eee1e7499e151c091e184c5d1f56331..3edceeee371bbe4978765bf0f96b2aef14dd5102 100644 (file)
@@ -53,7 +53,6 @@ using namespace dcpomatic;
 
 Hints::Hints (weak_ptr<const Film> film)
        : _film (film)
-       , _thread (0)
        , _long_ccap (false)
        , _overlap_ccap (false)
        , _too_many_ccap_lines (false)
@@ -65,27 +64,22 @@ Hints::Hints (weak_ptr<const Film> film)
 void
 Hints::start ()
 {
-       _thread = new boost::thread (bind(&Hints::thread, this));
+       _thread = boost::thread (bind(&Hints::thread, this));
 }
 
 Hints::~Hints ()
 {
-       if (!_thread) {
+       if (!_thread.joinable()) {
                return;
        }
 
        try {
-               {
-                       boost::mutex::scoped_lock lm (_mutex);
-                       _stop = true;
-               }
-               _thread->interrupt ();
-               _thread->join ();
+               _stop = true;
+               _thread.interrupt ();
+               _thread.join ();
        } catch (...) {
 
        }
-
-       delete _thread;
 }
 
 void
@@ -241,7 +235,7 @@ Hints::thread ()
 
                        for (size_t i = 0; i < sample_peak.size(); ++i) {
                                float const peak = max (sample_peak[i].peak, true_peak.empty() ? 0 : true_peak[i]);
-                               float const peak_dB = 20 * log10 (peak) + an->gain_correction (film->playlist ());
+                               float const peak_dB = linear_to_db(peak) + an->gain_correction(film->playlist());
                                if (peak_dB > -3) {
                                        ch += dcp::raw_convert<string> (short_audio_channel_name (i)) + ", ";
                                }
@@ -279,11 +273,8 @@ Hints::thread ()
                        struct timeval now;
                        gettimeofday (&now, 0);
                        if ((seconds(now) - seconds(last_pulse)) > 1) {
-                               {
-                                       boost::mutex::scoped_lock lm (_mutex);
-                                       if (_stop) {
-                                               break;
-                                       }
+                               if (_stop) {
+                                       break;
                                }
                                emit (bind (boost::ref(Pulse)));
                                last_pulse = now;