From: Carl Hetherington Date: Sun, 20 Oct 2019 21:03:27 +0000 (+0200) Subject: Move _player_video into VideoView. X-Git-Tag: v2.15.40^2~40 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=ac25cd82d5d29c79b46033a742aaea33c700a524 Move _player_video into VideoView. --- diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc index 178311ac9..8b90cd9c9 100644 --- a/src/wx/film_viewer.cc +++ b/src/wx/film_viewer.cc @@ -157,8 +157,7 @@ FilmViewer::set_film (shared_ptr film) _film = film; _video_position = DCPTime (); - _player_video.first.reset (); - _player_video.second = DCPTime (); + _video_view->clear (); _video_view->set_image (shared_ptr()); _closed_captions_dialog->clear (); @@ -406,11 +405,11 @@ FilmViewer::slow_refresh () bool FilmViewer::quick_refresh () { - if (!_player_video.first) { + if (!_video_view->_player_video.first) { return false; } - if (!_player_video.first->reset_metadata (_film, _player->video_container_size(), _film->frame_size())) { + if (!_video_view->_player_video.first->reset_metadata (_film, _player->video_container_size(), _film->frame_size())) { return false; } diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h index 916491d30..e98fbe176 100644 --- a/src/wx/film_viewer.h +++ b/src/wx/film_viewer.h @@ -173,7 +173,6 @@ private: bool _coalesce_player_changes; std::list _pending_player_changes; - std::pair, dcpomatic::DCPTime> _player_video; dcpomatic::DCPTime _video_position; Position _inter_position; dcp::Size _inter_size; diff --git a/src/wx/simple_video_view.cc b/src/wx/simple_video_view.cc index 456d8cd30..91f7df5ff 100644 --- a/src/wx/simple_video_view.cc +++ b/src/wx/simple_video_view.cc @@ -185,8 +185,8 @@ SimpleVideoView::get (bool lazy) do { Butler::Error e; - _viewer->_player_video = _viewer->_butler->get_video (!lazy, &e); - if (!_viewer->_player_video.first && e == Butler::AGAIN) { + _player_video = _viewer->_butler->get_video (!lazy, &e); + if (!_player_video.first && e == Butler::AGAIN) { if (lazy) { /* No video available; return saying we failed */ return false; @@ -197,10 +197,10 @@ SimpleVideoView::get (bool lazy) } } } while ( - _viewer->_player_video.first && + _player_video.first && _viewer->film()->three_d() && - _viewer->_eyes != _viewer->_player_video.first->eyes() && - _viewer->_player_video.first->eyes() != EYES_BOTH + _viewer->_eyes != _player_video.first->eyes() && + _player_video.first->eyes() != EYES_BOTH ); try { @@ -218,17 +218,17 @@ SimpleVideoView::get (bool lazy) void SimpleVideoView::display_player_video () { - if (!_viewer->_player_video.first) { + if (!_player_video.first) { set_image (shared_ptr()); _viewer->refresh_view (); return; } - if (_viewer->playing() && (_viewer->time() - _viewer->_player_video.second) > _viewer->one_video_frame()) { + if (_viewer->playing() && (_viewer->time() - _player_video.second) > _viewer->one_video_frame()) { /* Too late; just drop this frame before we try to get its image (which will be the time-consuming part if this frame is J2K). */ - _viewer->_video_position = _viewer->_player_video.second; + _viewer->_video_position = _player_video.second; ++_viewer->_dropped; return; } @@ -254,16 +254,16 @@ SimpleVideoView::display_player_video () _viewer->_state_timer.set ("get image"); set_image ( - _viewer->_player_video.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true) + _player_video.first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true) ); _viewer->_state_timer.set ("ImageChanged"); - _viewer->ImageChanged (_viewer->_player_video.first); + _viewer->ImageChanged (_player_video.first); _viewer->_state_timer.unset (); - _viewer->_video_position = _viewer->_player_video.second; - _viewer->_inter_position = _viewer->_player_video.first->inter_position (); - _viewer->_inter_size = _viewer->_player_video.first->inter_size (); + _viewer->_video_position = _player_video.second; + _viewer->_inter_position = _player_video.first->inter_position (); + _viewer->_inter_size = _player_video.first->inter_size (); _viewer->refresh_view (); diff --git a/src/wx/video_view.cc b/src/wx/video_view.cc new file mode 100644 index 000000000..eb85079c3 --- /dev/null +++ b/src/wx/video_view.cc @@ -0,0 +1,28 @@ +/* + Copyright (C) 2019 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + +#include "video_view.h" + +void +VideoView::clear () +{ + _player_video.first.reset (); + _player_video.second = dcpomatic::DCPTime (); +} diff --git a/src/wx/video_view.h b/src/wx/video_view.h index 873df162b..f4a8ea22b 100644 --- a/src/wx/video_view.h +++ b/src/wx/video_view.h @@ -21,12 +21,14 @@ #ifndef DCPOMATIC_VIDEO_VIEW_H #define DCPOMATIC_VIDEO_VIEW_H +#include "lib/dcpomatic_time.h" #include #include class Image; class wxWindow; class FilmViewer; +class PlayerVideo; class VideoView { @@ -47,6 +49,8 @@ public: /* XXX_b: make pure */ virtual void start () {} + void clear (); + boost::signals2::signal Sized; /* XXX_b: to remove */ @@ -57,7 +61,11 @@ public: virtual void display_player_video () {} protected: + /* XXX_b: to remove */ + friend class FilmViewer; + FilmViewer* _viewer; + std::pair, dcpomatic::DCPTime> _player_video; #ifdef DCPOMATIC_VARIANT_SWAROOP bool _in_watermark; diff --git a/src/wx/wscript b/src/wx/wscript index f4fc4927e..5dbf75ecb 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -145,6 +145,7 @@ sources = """ update_dialog.cc verify_dcp_dialog.cc video_panel.cc + video_view.cc video_waveform_dialog.cc video_waveform_plot.cc wx_util.cc