Remove in-place translations support.
[dcpomatic.git] / src / lib / audio_ring_buffers.cc
index d1375cb27e2eeeb80d3a2935a06a10cb3aee9b87..d21f20968d5d087d5e668d95b6cbff6cd1ad1cbf 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2016-2019 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2016-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #include "audio_ring_buffers.h"
 #include "dcpomatic_assert.h"
 #include "exceptions.h"
-#include <boost/foreach.hpp>
 #include <iostream>
 
+
 using std::min;
 using std::cout;
 using std::make_pair;
 using std::pair;
 using std::list;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
+using namespace dcpomatic;
+
 
 AudioRingBuffers::AudioRingBuffers ()
-       : _used_in_head (0)
 {
 
 }
 
+
 /** @param frame_rate Frame rate in use; this is only used to check timing consistency of the incoming data */
 void
 AudioRingBuffers::put (shared_ptr<const AudioBuffers> data, DCPTime time, int frame_rate)
@@ -56,6 +59,7 @@ AudioRingBuffers::put (shared_ptr<const AudioBuffers> data, DCPTime time, int fr
        _buffers.push_back(make_pair(data, time));
 }
 
+
 /** @return time of the returned data; if it's not set this indicates an underrun */
 optional<DCPTime>
 AudioRingBuffers::get (float* out, int channels, int frames)
@@ -71,17 +75,16 @@ AudioRingBuffers::get (float* out, int channels, int frames)
                                        *out++ = 0;
                                }
                        }
-                       cout << "audio underrun; missing " << frames << "!\n";
                        return time;
                }
 
-               pair<shared_ptr<const AudioBuffers>, DCPTime> front = _buffers.front ();
+               auto front = _buffers.front ();
                if (!time) {
                        time = front.second + DCPTime::from_frames(_used_in_head, 48000);
                }
 
                int const to_do = min (frames, front.first->frames() - _used_in_head);
-               float** p = front.first->data();
+               float* const* p = front.first->data();
                int const c = min (front.first->channels(), channels);
                for (int i = 0; i < to_do; ++i) {
                        for (int j = 0; j < c; ++j) {
@@ -103,16 +106,18 @@ AudioRingBuffers::get (float* out, int channels, int frames)
        return time;
 }
 
+
 optional<DCPTime>
 AudioRingBuffers::peek () const
 {
        boost::mutex::scoped_lock lm (_mutex);
        if (_buffers.empty()) {
-               return optional<DCPTime>();
+               return {};
        }
        return _buffers.front().second;
 }
 
+
 void
 AudioRingBuffers::clear ()
 {
@@ -121,13 +126,14 @@ AudioRingBuffers::clear ()
        _used_in_head = 0;
 }
 
+
 Frame
 AudioRingBuffers::size () const
 {
        boost::mutex::scoped_lock lm (_mutex);
        Frame s = 0;
-       for (list<pair<shared_ptr<const AudioBuffers>, DCPTime> >::const_iterator i = _buffers.begin(); i != _buffers.end(); ++i) {
-               s += i->first->frames();
+       for (auto const& i: _buffers) {
+               s += i.first->frames();
        }
        return s - _used_in_head;
 }