X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer.h;h=ffc578c711fffe50410231b07042695dcaa7f8a2;hb=97632e5e91fc0e2c0a3dd84ed9a167f79e4bd14d;hp=eb6589b564cce151cee832f0b2db929cc61411d3;hpb=ba8a5a15cc27988e2bbc6acd470d8532f1d8e99f;p=dcpomatic.git diff --git a/src/lib/player.h b/src/lib/player.h index eb6589b56..ffc578c71 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -22,6 +22,7 @@ #define DCPOMATIC_PLAYER_H #include "player_subtitles.h" +#include "active_subtitles.h" #include "film.h" #include "content.h" #include "position_image.h" @@ -62,7 +63,6 @@ public: 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 (); @@ -86,7 +86,6 @@ public: 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; @@ -104,7 +103,6 @@ private: ContentTime dcp_to_content_time (boost::shared_ptr piece, DCPTime t) const; DCPTime content_time_to_dcp (boost::shared_ptr piece, ContentTime t) const; boost::shared_ptr black_player_video_frame () const; - std::list > overlaps (DCPTime from, DCPTime to, boost::function valid); void video (boost::weak_ptr, ContentVideo); void audio (boost::weak_ptr, AudioStreamPtr, ContentAudio); void image_subtitle_start (boost::weak_ptr, ContentImageSubtitle); @@ -112,13 +110,14 @@ private: void subtitle_stop (boost::weak_ptr, ContentTime); boost::shared_ptr resampler (boost::shared_ptr content, AudioStreamPtr stream, bool create); DCPTime one_video_frame () const; - void fill_video (DCPTimePeriod period); void fill_audio (DCPTimePeriod period); void audio_flush (boost::shared_ptr, AudioStreamPtr stream); void audio_transform (boost::shared_ptr content, AudioStreamPtr stream, ContentAudio content_audio, DCPTime time); std::pair, DCPTime> discard_audio ( boost::shared_ptr audio, DCPTime time, DCPTime discard_to ) const; + boost::optional subtitles_for_frame (DCPTime time) const; + void emit_video (boost::shared_ptr pv, DCPTime time); boost::shared_ptr _film; boost::shared_ptr _playlist; @@ -146,14 +145,17 @@ private: /** Last PlayerVideo that was emitted */ boost::shared_ptr _last_video; - /** Time just after the last video frame we emitted, or the last seek time */ + /** Time just after the last video frame we emitted, or empty if we have just seeked */ boost::optional _last_video_time; - /** Time just after the last audio frame we emitted, or the last seek time */ + /** Time just after the last audio frame we emitted, or empty if we have just seeked */ boost::optional _last_audio_time; + boost::optional _last_seek_time; + bool _last_seek_accurate; AudioMerger _audio_merger; - class StreamState { + class StreamState + { public: StreamState () {} @@ -170,9 +172,7 @@ private: std::list _no_video; std::list _no_audio; - typedef std::map, std::pair > ActiveSubtitles; ActiveSubtitles _active_subtitles; - boost::shared_ptr _audio_processor; typedef std::map, AudioStreamPtr>, boost::shared_ptr > ResamplerMap; ResamplerMap _resamplers;