X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fplayer.h;h=31628941f5eb04804249bd95583cdba7d6b6400e;hb=1c09ae94a4b94395ce2c13020a71526a65b9ce7e;hp=7d99c22c65ccca0448b73ec428b81572db8bc081;hpb=d5c059a2ff9bab5c2973db6bc4860591679dd42b;p=dcpomatic.git diff --git a/src/lib/player.h b/src/lib/player.h index 7d99c22c6..31628941f 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -45,10 +45,6 @@ namespace dcp { class ReelAsset; } -namespace dcpomatic { - class FontData; -} - class AtmosContent; class AudioBuffers; class Content; @@ -84,10 +80,9 @@ public: bool pass (); void seek (dcpomatic::DCPTime time, bool accurate); - std::vector get_subtitle_fonts (); + std::vector> get_subtitle_fonts (); std::list get_reel_assets (); dcp::Size video_container_size () const { - boost::mutex::scoped_lock lm (_mutex); return _video_container_size; } @@ -100,8 +95,8 @@ public: void set_play_referenced (); void set_dcp_decode_reduction (boost::optional reduction); - boost::optional content_time_to_dcp (std::shared_ptr content, dcpomatic::ContentTime t); - boost::optional dcp_to_content_time (std::shared_ptr content, dcpomatic::DCPTime t); + boost::optional content_time_to_dcp (std::shared_ptr content, dcpomatic::ContentTime t) const; + boost::optional dcp_to_content_time (std::shared_ptr content, dcpomatic::DCPTime t) const; boost::signals2::signal Change; @@ -131,7 +126,6 @@ private: void construct (); void setup_pieces (); - void setup_pieces_unlocked (); void film_change (ChangeType, Film::Property); void playlist_change (ChangeType); void playlist_content_change (ChangeType, int, bool); @@ -167,9 +161,9 @@ private: */ mutable boost::mutex _mutex; - std::shared_ptr _film; + std::shared_ptr const _film; /** Playlist, or 0 if we are using the one from the _film */ - std::shared_ptr _playlist; + std::shared_ptr const _playlist; /** > 0 if we are suspended (i.e. pass() and seek() do nothing) */ boost::atomic _suspended; @@ -178,21 +172,21 @@ private: /** Size of the image we are rendering to; this may be the DCP frame size, or * the size of preview in a window. */ - dcp::Size _video_container_size; + boost::atomic _video_container_size; std::shared_ptr _black_image; /** true if the player should ignore all video; i.e. never produce any */ - bool _ignore_video = false; - bool _ignore_audio = false; + boost::atomic _ignore_video; + boost::atomic _ignore_audio; /** true if the player should ignore all text; i.e. never produce any */ - bool _ignore_text = false; - bool _always_burn_open_subtitles = false; + boost::atomic _ignore_text; + boost::atomic _always_burn_open_subtitles; /** true if we should try to be fast rather than high quality */ - bool _fast = false; + boost::atomic _fast; /** true if we should keep going in the face of `survivable' errors */ - bool _tolerant = false; + bool const _tolerant; /** true if we should `play' (i.e output) referenced DCP data (e.g. for preview) */ - bool _play_referenced = false; + boost::atomic _play_referenced; /** Time of the next video that we will emit, or the time of the last accurate seek */ boost::optional _next_video_time; @@ -201,7 +195,7 @@ private: /** Time of the next audio that we will emit, or the time of the last accurate seek */ boost::optional _next_audio_time; - boost::optional _dcp_decode_reduction; + boost::atomic> _dcp_decode_reduction; typedef std::map, std::shared_ptr, std::owner_less>> LastVideoMap; LastVideoMap _last_video; @@ -234,7 +228,7 @@ private: dcpomatic::DCPTime _playback_length; /** Alignment for subtitle images that we create */ - Image::Alignment _subtitle_alignment = Image::Alignment::PADDED; + Image::Alignment const _subtitle_alignment = Image::Alignment::PADDED; boost::signals2::scoped_connection _film_changed_connection; boost::signals2::scoped_connection _playlist_change_connection;