diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-02-02 13:46:20 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-02-02 13:46:20 +0000 |
| commit | aeb20874df252fd8d36f5d3742ed8e34f2215367 (patch) | |
| tree | f00d1d8fdc41d8ec07e3c55fedba2e724a2b0188 /src/lib/writer.h | |
| parent | 8e7d91ac8b945d66a65fc7b20249cd1c7796c7fa (diff) | |
First try at doing fake writes.
Diffstat (limited to 'src/lib/writer.h')
| -rw-r--r-- | src/lib/writer.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/lib/writer.h b/src/lib/writer.h index 768d63448..57609825d 100644 --- a/src/lib/writer.h +++ b/src/lib/writer.h @@ -33,12 +33,35 @@ namespace libdcp { class SoundAssetWriter; } +struct QueueItem +{ +public: + enum Type { + FULL, + FAKE, + REPEAT + } type; + + /** encoded data for FULL */ + boost::shared_ptr<const EncodedData> encoded; + /** size of data for FAKE */ + int size; + /** frame index */ + int frame; +}; + +bool operator< (QueueItem const & a, QueueItem const & b); +bool operator== (QueueItem const & a, QueueItem const & b); + class Writer { public: Writer (boost::shared_ptr<Film>); + + bool can_fake_write (int) const; void write (boost::shared_ptr<const EncodedData>, int); + void fake_write (int); void write (boost::shared_ptr<const AudioBuffers>); void repeat (int f); void finish (); @@ -53,11 +76,11 @@ private: boost::thread* _thread; bool _finish; - std::list<std::pair<boost::shared_ptr<const EncodedData>, int> > _queue; + std::list<QueueItem> _queue; mutable boost::mutex _mutex; boost::condition _condition; boost::shared_ptr<const EncodedData> _last_written; - std::list<int> _pending; + std::list<QueueItem> _pending; int _last_written_frame; static const unsigned int _maximum_frames_in_memory; |
