void set_video_container_size (dcp::Size);
void set_ignore_video ();
- void set_ignore_audio ();
void set_enable_subtitles (bool enable);
void set_always_burn_subtitles (bool burn);
void set_fast ();
private:
friend class PlayerWrapper;
friend class Piece;
- friend struct player_overlaps_test;
friend struct player_time_calculation_test1;
friend struct player_time_calculation_test2;
friend struct player_time_calculation_test3;
ContentTime dcp_to_content_time (boost::shared_ptr<const Piece> piece, DCPTime t) const;
DCPTime content_time_to_dcp (boost::shared_ptr<const Piece> piece, ContentTime t) const;
boost::shared_ptr<PlayerVideo> black_player_video_frame () const;
- std::list<boost::shared_ptr<Piece> > overlaps (DCPTime from, DCPTime to, boost::function<bool (Content *)> valid);
void video (boost::weak_ptr<Piece>, ContentVideo);
void audio (boost::weak_ptr<Piece>, AudioStreamPtr, ContentAudio);
void image_subtitle_start (boost::weak_ptr<Piece>, ContentImageSubtitle);
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;
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;
- class StreamState {
+ class StreamState
+ {
public:
StreamState () {}
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>, std::list<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;