X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fwx%2Ffilm_viewer.cc;h=749e4ceb7c315e73147737c465f2d26e981fba80;hb=687ade428fb7ad6d0949f12aa5a7f5b643434489;hp=c7e154fa53597bf340bb4337cc32af6174bb8159;hpb=8a3d5a7729e10a901132ff00efbd5d80e38b2455;p=dcpomatic.git diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index c7e154fa5..749e4ceb7 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -96,10 +96,10 @@ FilmViewer::FilmViewer (wxWindow* p) { switch (Config::instance()->video_view_type()) { case Config::VIDEO_VIEW_OPENGL: - _video_view = new GLVideoView (this, p); + _video_view = std::make_shared(this, p); break; case Config::VIDEO_VIEW_SIMPLE: - _video_view = new SimpleVideoView (this, p); + _video_view = std::make_shared(this, p); break; } @@ -229,6 +229,10 @@ FilmViewer::recreate_butler () _butler->disable_audio (); } + if (dynamic_pointer_cast(_video_view) && _optimise_for_j2k) { + _butler->set_prepare_only_proxy (true); + } + _closed_captions_dialog->set_butler (_butler); resume (); @@ -281,21 +285,22 @@ FilmViewer::calculate_sizes () auto const view_ratio = float(_video_view->get()->GetSize().x) / _video_view->get()->GetSize().y; auto const film_ratio = container ? container->ratio () : 1.78; + dcp::Size out_size; if (view_ratio < film_ratio) { /* panel is less widscreen than the film; clamp width */ - _out_size.width = _video_view->get()->GetSize().x; - _out_size.height = lrintf (_out_size.width / film_ratio); + out_size.width = _video_view->get()->GetSize().x; + out_size.height = lrintf (out_size.width / film_ratio); } else { /* panel is more widescreen than the film; clamp height */ - _out_size.height = _video_view->get()->GetSize().y; - _out_size.width = lrintf (_out_size.height * film_ratio); + out_size.height = _video_view->get()->GetSize().y; + out_size.width = lrintf (out_size.height * film_ratio); } /* Catch silly values */ - _out_size.width = max (64, _out_size.width); - _out_size.height = max (64, _out_size.height); + out_size.width = max (64, out_size.width); + out_size.height = max (64, out_size.height); - _player->set_video_container_size (_out_size); + _player->set_video_container_size (out_size); } @@ -771,3 +776,12 @@ FilmViewer::image_changed (shared_ptr pv) { emit (boost::bind(boost::ref(ImageChanged), pv)); } + + +void +FilmViewer::set_optimise_for_j2k (bool o) +{ + _optimise_for_j2k = o; + _video_view->set_optimise_for_j2k (o); +} +