Primitive dropped frame count in display.
[dcpomatic.git] / src / wx / film_viewer.h
index ed7795dad3f1a96233a449412caca2d609aea09f..419ee4c294b1be9db7d8d23e91c98961446cb20c 100644 (file)
@@ -41,10 +41,13 @@ class Butler;
 class FilmViewer : public wxPanel
 {
 public:
-       FilmViewer (wxWindow *);
+       FilmViewer (wxWindow *, bool outline_content = true, bool jump_to_selected = true);
        ~FilmViewer ();
 
        void set_film (boost::shared_ptr<Film>);
+       boost::shared_ptr<Film> film () const {
+               return _film;
+       }
 
        /** @return our `playhead' position; this may not lie exactly on a frame boundary */
        DCPTime position () const {
@@ -53,9 +56,14 @@ public:
 
        void set_position (DCPTime p);
        void set_coalesce_player_changes (bool c);
+       void set_dcp_decode_reduction (boost::optional<int> reduction);
 
        void refresh ();
 
+       int dropped () const {
+               return _dropped;
+       }
+
        int audio_callback (void* out, unsigned int frames);
 
        boost::signals2::signal<void (boost::weak_ptr<PlayerVideo>)> ImageChanged;
@@ -63,7 +71,7 @@ public:
 private:
        void paint_panel ();
        void panel_sized (wxSizeEvent &);
-       void slider_moved ();
+       void slider_moved (bool update_slider);
        void play_clicked ();
        void timer ();
        void calculate_sizes ();
@@ -89,11 +97,14 @@ private:
        DCPTime time () const;
        void start ();
        bool stop ();
+       Frame average_latency () const;
+       DCPTime one_video_frame () const;
 
        boost::shared_ptr<Film> _film;
        boost::shared_ptr<Player> _player;
 
        wxSizer* _v_sizer;
+       /** The area that we put our image in */
        wxPanel* _panel;
        wxCheckBox* _outline_content;
        wxRadioButton* _left_eye;
@@ -130,5 +141,12 @@ private:
        bool _playing;
        boost::shared_ptr<Butler> _butler;
 
+       std::list<Frame> _latency_history;
+       /** Mutex to protect _latency_history */
+       mutable boost::mutex _latency_history_mutex;
+       int _latency_history_count;
+
+       int _dropped;
+
        boost::signals2::scoped_connection _config_changed_connection;
 };