*/
+/** @file src/audio_merger.h
+ * @brief AudioMerger class.
+ */
+
#include "audio_buffers.h"
#include "dcpomatic_time.h"
#include "util.h"
+/** @class AudioMerger.
+ * @brief A class that can merge audio data from many sources.
+ */
class AudioMerger
{
public:
- AudioMerger (int frame_rate);
+ explicit AudioMerger (int frame_rate);
- /** Pull audio up to a given time; after this call, no more data can be pushed
- * before the specified time.
- */
- std::list<std::pair<boost::shared_ptr<AudioBuffers>, DCPTime> > pull (DCPTime time);
- void push (boost::shared_ptr<const AudioBuffers> audio, DCPTime time);
+ std::list<std::pair<boost::shared_ptr<AudioBuffers>, dcpomatic::DCPTime> > pull (dcpomatic::DCPTime time);
+ void push (boost::shared_ptr<const AudioBuffers> audio, dcpomatic::DCPTime time);
+ void clear ();
private:
+ Frame frames (dcpomatic::DCPTime t) const;
+
class Buffer
{
public:
* @param t Time
* @param r Frame rate.
*/
- Buffer (int c, int32_t f, DCPTime t, int r)
+ Buffer (int c, int32_t f, dcpomatic::DCPTime t, int r)
: audio (new AudioBuffers (c, f))
, time (t)
, frame_rate (r)
{}
- Buffer (boost::shared_ptr<AudioBuffers> a, DCPTime t, int r)
+ Buffer (boost::shared_ptr<AudioBuffers> a, dcpomatic::DCPTime t, int r)
: audio (a)
, time (t)
, frame_rate (r)
{}
boost::shared_ptr<AudioBuffers> audio;
- DCPTime time;
+ dcpomatic::DCPTime time;
int frame_rate;
- DCPTimePeriod period () const {
- return DCPTimePeriod (time, time + DCPTime::from_frames (audio->frames(), frame_rate));
+ dcpomatic::DCPTimePeriod period () const {
+ return dcpomatic::DCPTimePeriod (time, time + dcpomatic::DCPTime::from_frames (audio->frames(), frame_rate));
}
};
};
std::list<Buffer> _buffers;
- DCPTime _last_pull;
int _frame_rate;
};