+ boost::shared_ptr<Film> film () const {
+ return _film;
+ }
+
+ void seek (DCPTime t, bool accurate);
+ void seek (boost::shared_ptr<Content> content, ContentTime p, bool accurate);
+ void seek_by (DCPTime by, bool accurate);
+ /** @return our `playhead' position; this may not lie exactly on a frame boundary */
+ DCPTime position () const {
+ return _video_position;
+ }
+ DCPTime one_video_frame () const;
+
+ void start ();
+ bool stop ();
+ bool playing () const {
+ return _playing;
+ }
+
+ void set_coalesce_player_changes (bool c);
+ void set_dcp_decode_reduction (boost::optional<int> reduction);
+ boost::optional<int> dcp_decode_reduction () const;
+ void set_outline_content (bool o);
+ void set_eyes (Eyes e);
+
+ void slow_refresh ();
+
+ int dropped () const {
+ return _dropped;
+ }
+
+ int audio_callback (void* out, unsigned int frames);
+
+ boost::signals2::signal<void (boost::weak_ptr<PlayerVideo>)> ImageChanged;
+ boost::signals2::signal<void ()> PositionChanged;
+ boost::signals2::signal<void (DCPTime)> Started;
+ boost::signals2::signal<void (DCPTime)> Stopped;
+ boost::signals2::signal<void (DCPTime)> Seeked;
+ boost::signals2::signal<void ()> FilmChanged;
+
+ boost::signals2::signal<bool ()> PlaybackPermitted;