diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-08-17 00:25:09 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-08-17 00:25:09 +0200 |
| commit | 6b50d63a76999bb5c443b69e7ec68b4607ab9b4e (patch) | |
| tree | fe2041174491531b8bbd8dd395d67f88e1b8f191 | |
| parent | b5632b00565286feed6b3efa1c1b4b19b1b0f164 (diff) | |
Only warn about lots of frame drops in the player (#2069).
| -rw-r--r-- | src/tools/dcpomatic_player.cc | 21 | ||||
| -rw-r--r-- | src/wx/film_viewer.cc | 22 | ||||
| -rw-r--r-- | src/wx/film_viewer.h | 3 |
3 files changed, 24 insertions, 22 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index 112f2c065..7ffb107bf 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -33,6 +33,7 @@ #include "wx/system_information_dialog.h" #include "wx/player_stress_tester.h" #include "wx/verify_dcp_progress_dialog.h" +#include "wx/nag_dialog.h" #include "lib/cross.h" #include "lib/config.h" #include "lib/util.h" @@ -210,6 +211,7 @@ public: _viewer->PlaybackPermitted.connect (bind(&DOMFrame::playback_permitted, this)); _viewer->Started.connect (bind(&DOMFrame::playback_started, this, _1)); _viewer->Stopped.connect (bind(&DOMFrame::playback_stopped, this, _1)); + _viewer->TooManyDropped.connect (bind(&DOMFrame::too_many_frames_dropped, this)); _info = new PlayerInformation (_overall_panel, _viewer); setup_main_sizer (Config::instance()->player_mode()); #ifdef __WXOSX__ @@ -347,6 +349,25 @@ public: _controls->log (wxString::Format("playback-stopped %s", time.timecode(_film->video_frame_rate()).c_str())); } + + void too_many_frames_dropped () + { + if (!Config::instance()->nagged(Config::NAG_TOO_MANY_DROPPED_FRAMES)) { + _viewer->stop (); + } + + NagDialog::maybe_nag ( + this, + Config::NAG_TOO_MANY_DROPPED_FRAMES, + _("The player is dropping a lot of frames, so playback may not be accurate.\n\n" + "<b>This does not necessarily mean that the DCP you are playing is defective!</b>\n\n" + "You may be able to improve player performance by:\n" + "• choosing 'decode at half resolution' or 'decode at quarter resolution' from the View menu\n" + "• using a more powerful computer.\n" + ) + ); + } + void set_decode_reduction (optional<int> reduction) { _viewer->set_dcp_decode_reduction (reduction); diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 4ea2a8b00..17649d450 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -104,7 +104,7 @@ FilmViewer::FilmViewer (wxWindow* p) } _video_view->Sized.connect (boost::bind(&FilmViewer::video_view_sized, this)); - _video_view->TooManyDropped.connect (boost::bind(&FilmViewer::too_many_frames_dropped, this)); + _video_view->TooManyDropped.connect (boost::bind(boost::ref(TooManyDropped))); set_film (shared_ptr<Film>()); @@ -770,23 +770,3 @@ FilmViewer::image_changed (shared_ptr<PlayerVideo> pv) { emit (boost::bind(boost::ref(ImageChanged), pv)); } - - -void -FilmViewer::too_many_frames_dropped () -{ - if (!Config::instance()->nagged(Config::NAG_TOO_MANY_DROPPED_FRAMES)) { - stop (); - } - - NagDialog::maybe_nag ( - panel(), - Config::NAG_TOO_MANY_DROPPED_FRAMES, - _("The player is dropping a lot of frames, so playback may not be accurate.\n\n" - "<b>This does not necessarily mean that the DCP you are playing is defective!</b>\n\n" - "You may be able to improve player performance by:\n" - "• choosing 'decode at half resolution' or 'decode at quarter resolution' from the View menu\n" - "• using a more powerful computer.\n" - ) - ); -} diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h index 0f9967519..2efe448c9 100644 --- a/src/wx/film_viewer.h +++ b/src/wx/film_viewer.h @@ -145,6 +145,8 @@ public: boost::signals2::signal<void (dcpomatic::DCPTime)> Stopped; /** While playing back we reached the end of the film (emitted from GUI thread) */ boost::signals2::signal<void ()> Finished; + /** Emitted from the GUI thread when a lot of frames are being dropped */ + boost::signals2::signal<void()> TooManyDropped; boost::signals2::signal<bool ()> PlaybackPermitted; @@ -161,7 +163,6 @@ private: void config_changed (Config::Property); void film_length_change (); void ui_finished (); - void too_many_frames_dropped (); dcpomatic::DCPTime uncorrected_time () const; Frame average_latency () const; |
