#define DCPOMATIC_PLAYER_H
#include "player_subtitles.h"
+#include "active_subtitles.h"
#include "film.h"
#include "content.h"
#include "position_image.h"
void subtitle_stop (boost::weak_ptr<Piece>, ContentTime);
boost::shared_ptr<Resampler> resampler (boost::shared_ptr<const AudioContent> content, AudioStreamPtr stream, bool create);
DCPTime one_video_frame () const;
- void fill_video (DCPTimePeriod period);
+ bool fill_video (DCPTimePeriod period);
void fill_audio (DCPTimePeriod period);
void audio_flush (boost::shared_ptr<Piece>, AudioStreamPtr stream);
void audio_transform (boost::shared_ptr<AudioContent> content, AudioStreamPtr stream, ContentAudio content_audio, DCPTime time);
std::pair<boost::shared_ptr<AudioBuffers>, DCPTime> discard_audio (
boost::shared_ptr<const AudioBuffers> audio, DCPTime time, DCPTime discard_to
) const;
+ boost::optional<PositionImage> subtitles_for_frame (DCPTime time) const;
+ void emit_video (boost::shared_ptr<PlayerVideo> pv, DCPTime time);
boost::shared_ptr<const Film> _film;
boost::shared_ptr<const Playlist> _playlist;
boost::optional<DCPTime> _last_video_time;
/** Time just after the last audio frame we emitted, or the last seek time */
boost::optional<DCPTime> _last_audio_time;
+ boost::optional<DCPTime> _last_seek_time;
AudioMerger _audio_merger;
std::list<DCPTimePeriod> _no_video;
std::list<DCPTimePeriod> _no_audio;
- 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;
-
+ ActiveSubtitles _active_subtitles;
boost::shared_ptr<AudioProcessor> _audio_processor;
typedef std::map<std::pair<boost::shared_ptr<const AudioContent>, AudioStreamPtr>, boost::shared_ptr<Resampler> > ResamplerMap;
ResamplerMap _resamplers;