X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Ffilm_viewer.h;h=419ee4c294b1be9db7d8d23e91c98961446cb20c;hb=0b7c380031db6aa2ce546a2a0c89926f40eae6b5;hp=ed7795dad3f1a96233a449412caca2d609aea09f;hpb=fe99d14e3047e9302e94db372923c92291016f1c;p=dcpomatic.git diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h index ed7795dad..419ee4c29 100644 --- a/src/wx/film_viewer.h +++ b/src/wx/film_viewer.h @@ -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); + boost::shared_ptr 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 reduction); void refresh (); + int dropped () const { + return _dropped; + } + int audio_callback (void* out, unsigned int frames); boost::signals2::signal)> 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; boost::shared_ptr _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; + std::list _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; };