X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Fwx%2Ffilm_viewer.cc;h=2c90b86095278c9bd19b81831e27f3d82123909b;hp=98948b1f2b6c7f6deeef6ef9b23725d99a24e7b1;hb=cfbe9d2f44e380efed7a61b5b5c7a2fec7794915;hpb=6cac49dc50dae6b173135df101d532f20031ca70 diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 98948b1f2..2c90b8609 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -63,17 +63,11 @@ extern "C" { using std::bad_alloc; using std::cout; using std::dynamic_pointer_cast; -using std::exception; -using std::list; -using std::make_pair; using std::make_shared; using std::max; -using std::min; -using std::pair; using std::shared_ptr; using std::string; using std::vector; -using std::weak_ptr; using boost::optional; #if BOOST_VERSION >= 106100 using namespace boost::placeholders; @@ -94,6 +88,7 @@ FilmViewer::FilmViewer (wxWindow* p) : _audio (DCPOMATIC_RTAUDIO_API) , _closed_captions_dialog (new ClosedCaptionsDialog(p, this)) { +#if wxCHECK_VERSION(3, 1, 0) switch (Config::instance()->video_view_type()) { case Config::VIDEO_VIEW_OPENGL: _video_view = std::make_shared(this, p); @@ -102,6 +97,9 @@ FilmViewer::FilmViewer (wxWindow* p) _video_view = std::make_shared(this, p); break; } +#else + _video_view = std::make_shared(this, p); +#endif _video_view->Sized.connect (boost::bind(&FilmViewer::video_view_sized, this)); _video_view->TooManyDropped.connect (boost::bind(boost::ref(TooManyDropped))); @@ -169,7 +167,7 @@ FilmViewer::set_film (shared_ptr film) } try { - _player = make_shared(_film); + _player = make_shared(_film, _optimise_for_j2k ? Image::Alignment::COMPACT : Image::Alignment::PADDED); _player->set_fast (); if (_dcp_decode_reduction) { _player->set_dcp_decode_reduction (_dcp_decode_reduction); @@ -214,6 +212,12 @@ FilmViewer::recreate_butler () return; } +#if wxCHECK_VERSION(3, 1, 0) + auto const j2k_gl_optimised = dynamic_pointer_cast(_video_view) && _optimise_for_j2k; +#else + auto const j2k_gl_optimised = false; +#endif + _butler = std::make_shared( _film, _player, @@ -221,9 +225,9 @@ FilmViewer::recreate_butler () _audio_channels, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, - false, + j2k_gl_optimised ? Image::Alignment::COMPACT : Image::Alignment::PADDED, true, - dynamic_pointer_cast(_video_view) && _optimise_for_j2k + j2k_gl_optimised ); if (!Config::instance()->sound() && !_audio.isStreamOpen()) { @@ -367,7 +371,7 @@ FilmViewer::start () /* Calling start() below may directly result in Stopped being emitted, and if that * happens we want it to come after the Started signal, so do that first. */ - Started (position()); + Started (); _video_view->start (); } @@ -386,7 +390,7 @@ FilmViewer::stop () _playing = false; _video_view->stop (); - Stopped (position()); + Stopped (); _video_view->rethrow (); return true; @@ -645,7 +649,7 @@ int FilmViewer::audio_callback (void* out_p, unsigned int frames) { while (true) { - auto t = _butler->get_audio (reinterpret_cast (out_p), frames); + auto t = _butler->get_audio (Butler::Behaviour::NON_BLOCKING, reinterpret_cast (out_p), frames); if (!t || DCPTime(uncorrected_time() - *t) < one_video_frame()) { /* There was an underrun or this audio is on time; carry on */ break;