Keep active subtitles around until the video they are on has been emitted.
[dcpomatic.git] / src / lib / player.h
index 719e4289595485ffa46153de92f7944194dcbdfe..18b47043a11f1be643c77b08038f4f686af112be 100644 (file)
@@ -152,7 +152,8 @@ private:
 
        AudioMerger _audio_merger;
 
-       class StreamState {
+       class StreamState
+       {
        public:
                StreamState () {}
 
@@ -169,8 +170,22 @@ private:
        std::list<DCPTimePeriod> _no_video;
        std::list<DCPTimePeriod> _no_audio;
 
-       typedef std::map<boost::weak_ptr<Piece>, std::pair<PlayerSubtitles, DCPTime> > ActiveSubtitles;
-       ActiveSubtitles _active_subtitles;
+       class ActiveSubtitles
+       {
+       public:
+               ActiveSubtitles () {}
+
+               ActiveSubtitles (PlayerSubtitles s, DCPTime f)
+                       : subs (s)
+                       , from (f)
+               {}
+
+               PlayerSubtitles subs;
+               DCPTime from;
+               boost::optional<DCPTime> to;
+       };
+       typedef std::map<boost::weak_ptr<Piece>, ActiveSubtitles> ActiveSubtitlesMap;
+       ActiveSubtitlesMap _active_subtitles;
 
        boost::shared_ptr<AudioProcessor> _audio_processor;
        typedef std::map<std::pair<boost::shared_ptr<const AudioContent>, AudioStreamPtr>, boost::shared_ptr<Resampler> > ResamplerMap;