C++11 and whitespace cleanups.
[dcpomatic.git] / src / lib / audio_ring_buffers.h
index 906160aa72f7fb7e1d5553293c72c52a72e00f3b..6fb84e0d76dc8684757827742d183943e7b62a51 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2016-2017 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2016-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #ifndef DCPOMATIC_AUDIO_RING_BUFFERS_H
 #define DCPOMATIC_AUDIO_RING_BUFFERS_H
 
+
 #include "audio_buffers.h"
 #include "types.h"
 #include "dcpomatic_time.h"
-#include <boost/shared_ptr.hpp>
 #include <boost/thread.hpp>
 #include <list>
 
-class AudioRingBuffers : public boost::noncopyable
+
+class AudioRingBuffers
 {
 public:
        AudioRingBuffers ();
 
-       void put (boost::shared_ptr<const AudioBuffers> data, DCPTime time);
-       void get (float* out, int channels, int frames);
+       AudioRingBuffers (AudioBuffers const&) = delete;
+       AudioRingBuffers& operator= (AudioBuffers const&) = delete;
+
+       void put (std::shared_ptr<const AudioBuffers> data, dcpomatic::DCPTime time, int frame_rate);
+       boost::optional<dcpomatic::DCPTime> get (float* out, int channels, int frames);
+       boost::optional<dcpomatic::DCPTime> peek () const;
 
        void clear ();
+       /** @return number of frames currently available */
        Frame size () const;
 
-       DCPTime latest () const {
-               boost::mutex::scoped_lock lm (_mutex);
-               return _latest;
-       }
-
 private:
        mutable boost::mutex _mutex;
-       std::list<boost::shared_ptr<const AudioBuffers> > _buffers;
-       DCPTime _latest;
-       int _used_in_head;
+       std::list<std::pair<std::shared_ptr<const AudioBuffers>, dcpomatic::DCPTime>> _buffers;
+       int _used_in_head = 0;
 };
 
+
 #endif