summaryrefslogtreecommitdiff
path: root/src/tools
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-09-27 13:43:19 +0200
committerCarl Hetherington <cth@carlh.net>2021-09-27 13:43:19 +0200
commit952084c4221c5708e02c783284cf0f7239c6b4c4 (patch)
treec1521dab0586b6c33e02c9338c94abdc6b4c2ea9 /src/tools
parent6e3e984162ca7a181bc7c98d90c295e88e4e7f6c (diff)
parent81b9ea804cb9953bb1a4074f208f63374adbf09b (diff)
Merge branch 'better-gl' into v2.15.x
This changes the GL video view to use more modern GL (GLSL etc.) It also special-cases JPEG2000 video playback and does scaling and colourspace conversion on the GPU.
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/dcpomatic_player.cc63
-rw-r--r--src/tools/server_test.cc2
2 files changed, 27 insertions, 38 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index 7181ad129..e409b9731 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -139,20 +139,9 @@ class DOMFrame : public wxFrame
{
public:
DOMFrame ()
- : wxFrame (0, -1, _("DCP-o-matic Player"))
- , _dual_screen (0)
- , _update_news_requested (false)
- , _info (0)
+ : wxFrame (nullptr, -1, _("DCP-o-matic Player"))
, _mode (Config::instance()->player_mode())
- , _config_dialog (0)
- , _file_menu (0)
- , _history_items (0)
- , _history_position (0)
- , _history_separator (0)
- , _system_information_dialog (0)
- , _view_full_screen (0)
- , _view_dual_screen (0)
- , _main_sizer (new wxBoxSizer (wxVERTICAL))
+ , _main_sizer (new wxBoxSizer(wxVERTICAL))
{
dcpomatic_log = make_shared<NullLog>();
@@ -199,7 +188,7 @@ public:
*/
_overall_panel = new wxPanel (this, wxID_ANY);
- _viewer.reset (new FilmViewer (_overall_panel));
+ _viewer = make_shared<FilmViewer>(_overall_panel);
if (Config::instance()->player_mode() == Config::PLAYER_MODE_DUAL) {
auto pc = new PlaylistControls (_overall_panel, _viewer);
_controls = pc;
@@ -208,6 +197,7 @@ public:
_controls = new StandardControls (_overall_panel, _viewer, false);
}
_viewer->set_dcp_decode_reduction (Config::instance()->decode_reduction ());
+ _viewer->set_optimise_for_j2k (true);
_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));
@@ -255,7 +245,7 @@ public:
reset_film ();
- UpdateChecker::instance()->StateChanged.connect (boost::bind (&DOMFrame::update_checker_state_changed, this));
+ UpdateChecker::instance()->StateChanged.connect (boost::bind(&DOMFrame::update_checker_state_changed, this));
setup_screen ();
_stress.LoadDCP.connect (boost::bind(&DOMFrame::load_dcp, this, _1));
@@ -1038,30 +1028,30 @@ private:
_viewer->seek (_film->length() - _viewer->one_video_frame(), true);
}
- wxFrame* _dual_screen;
- bool _update_news_requested;
- PlayerInformation* _info;
+ wxFrame* _dual_screen = nullptr;
+ bool _update_news_requested = false;
+ PlayerInformation* _info = nullptr;
Config::PlayerMode _mode;
- wxPreferencesEditor* _config_dialog;
- wxPanel* _overall_panel;
- wxMenu* _file_menu;
- wxMenuItem* _view_cpl;
- wxMenu* _cpl_menu;
- int _history_items;
- int _history_position;
- wxMenuItem* _history_separator;
+ wxPreferencesEditor* _config_dialog = nullptr;
+ wxPanel* _overall_panel = nullptr;
+ wxMenu* _file_menu = nullptr;
+ wxMenuItem* _view_cpl = nullptr;
+ wxMenu* _cpl_menu = nullptr;
+ int _history_items = 0;
+ int _history_position = 0;
+ wxMenuItem* _history_separator = nullptr;
shared_ptr<FilmViewer> _viewer;
Controls* _controls;
- SystemInformationDialog* _system_information_dialog;
+ SystemInformationDialog* _system_information_dialog = nullptr;
std::shared_ptr<Film> _film;
boost::signals2::scoped_connection _config_changed_connection;
boost::signals2::scoped_connection _examine_job_connection;
- wxMenuItem* _file_add_ov;
- wxMenuItem* _file_add_kdm;
- wxMenuItem* _tools_verify;
- wxMenuItem* _view_full_screen;
- wxMenuItem* _view_dual_screen;
- wxSizer* _main_sizer;
+ wxMenuItem* _file_add_ov = nullptr;
+ wxMenuItem* _file_add_kdm = nullptr;
+ wxMenuItem* _tools_verify = nullptr;
+ wxMenuItem* _view_full_screen = nullptr;
+ wxMenuItem* _view_dual_screen = nullptr;
+ wxSizer* _main_sizer = nullptr;
PlayerStressTester _stress;
};
@@ -1106,7 +1096,6 @@ class App : public wxApp
public:
App ()
: wxApp ()
- , _frame (0)
{
#ifdef DCPOMATIC_LINUX
XInitThreads ();
@@ -1117,7 +1106,7 @@ private:
bool OnInit ()
{
- wxSplashScreen* splash = 0;
+ wxSplashScreen* splash = nullptr;
try {
wxInitAllImageHandlers ();
@@ -1167,7 +1156,7 @@ private:
_frame->Maximize ();
if (splash) {
splash->Destroy ();
- splash = 0;
+ splash = nullptr;
}
_frame->Show ();
@@ -1292,7 +1281,7 @@ private:
message_dialog (_frame, std_to_wx (m));
}
- DOMFrame* _frame;
+ DOMFrame* _frame = nullptr;
string _dcp_to_load;
boost::optional<string> _stress;
};
diff --git a/src/tools/server_test.cc b/src/tools/server_test.cc
index 6c7371253..ff3295599 100644
--- a/src/tools/server_test.cc
+++ b/src/tools/server_test.cc
@@ -155,7 +155,7 @@ main (int argc, char* argv[])
film = make_shared<Film>(film_dir);
film->read_metadata ();
- auto player = make_shared<Player>(film);
+ auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
player->Video.connect (bind(&process_video, _1));
while (!player->pass ()) {}
} catch (std::exception& e) {