summaryrefslogtreecommitdiff
path: root/src/wx
diff options
context:
space:
mode:
Diffstat (limited to 'src/wx')
-rw-r--r--src/wx/content_menu.cc9
-rw-r--r--src/wx/player_information.cc22
-rw-r--r--src/wx/video_panel.cc5
3 files changed, 25 insertions, 11 deletions
diff --git a/src/wx/content_menu.cc b/src/wx/content_menu.cc
index 700683bd2..4af5a71b7 100644
--- a/src/wx/content_menu.cc
+++ b/src/wx/content_menu.cc
@@ -548,12 +548,13 @@ ContentMenu::auto_crop ()
DCPOMATIC_ASSERT (film);
auto const content = _content.front();
auto const current_crop = content->video->actual_crop();
+ auto const video_size_guess = content->video->size().get_value_or(dcp::Size(1998, 1080));
_viewer.set_crop_guess(
dcpomatic::Rect<float>(
- static_cast<float>(std::max(0, crop.left - current_crop.left)) / content->video->size().width,
- static_cast<float>(std::max(0, crop.top - current_crop.top)) / content->video->size().height,
- 1.0f - (static_cast<float>(std::max(0, crop.left - current_crop.left + crop.right - current_crop.right)) / content->video->size().width),
- 1.0f - (static_cast<float>(std::max(0, crop.top - current_crop.top + crop.bottom - current_crop.bottom)) / content->video->size().height)
+ static_cast<float>(std::max(0, crop.left - current_crop.left)) / video_size_guess.width,
+ static_cast<float>(std::max(0, crop.top - current_crop.top)) / video_size_guess.height,
+ 1.0f - (static_cast<float>(std::max(0, crop.left - current_crop.left + crop.right - current_crop.right)) / video_size_guess.width),
+ 1.0f - (static_cast<float>(std::max(0, crop.top - current_crop.top + crop.bottom - current_crop.bottom)) / video_size_guess.height)
));
};
diff --git a/src/wx/player_information.cc b/src/wx/player_information.cc
index 806611140..057d26740 100644
--- a/src/wx/player_information.cc
+++ b/src/wx/player_information.cc
@@ -161,7 +161,13 @@ PlayerInformation::triggered_update ()
DCPOMATIC_ASSERT (dcp->video);
- checked_set (_dcp[r++], wxString::Format(_("Size: %dx%d"), dcp->video->size().width, dcp->video->size().height));
+ auto const size = dcp->video->size();
+
+ if (size) {
+ checked_set(_dcp[r++], wxString::Format(_("Size: %dx%d"), size->width, size->height));
+ } else {
+ checked_set(_dcp[r++], _("Size: unknown"));
+ }
if (dcp->video_frame_rate()) {
checked_set (_dcp[r++], wxString::Format(_("Frame rate: %d"), (int) lrint(*dcp->video_frame_rate())));
}
@@ -186,14 +192,18 @@ PlayerInformation::triggered_update ()
checked_set (_dcp[r++], std_to_wx(len));
- auto decode = dcp->video->size();
+ auto decode = size;
auto reduction = _viewer.dcp_decode_reduction();
- if (reduction) {
- decode.width /= pow(2, *reduction);
- decode.height /= pow(2, *reduction);
+ if (reduction && decode) {
+ decode->width /= pow(2, *reduction);
+ decode->height /= pow(2, *reduction);
}
- checked_set (_decode_resolution, wxString::Format(_("Decode resolution: %dx%d"), decode.width, decode.height));
+ if (decode) {
+ checked_set(_decode_resolution, wxString::Format(_("Decode resolution: %dx%d"), decode->width, decode->height));
+ } else {
+ checked_set(_decode_resolution, _("Decode resolution: unknown"));
+ }
DCPOMATIC_ASSERT(r <= dcp_lines);
diff --git a/src/wx/video_panel.cc b/src/wx/video_panel.cc
index 8a02dff25..b27db2547 100644
--- a/src/wx/video_panel.cc
+++ b/src/wx/video_panel.cc
@@ -725,7 +725,10 @@ bool
VideoPanel::scale_custom_edit_clicked ()
{
auto vc = _parent->selected_video().front()->video;
- CustomScaleDialog dialog(this, vc->size(), _parent->film()->frame_size(), vc->custom_ratio(), vc->custom_size());
+ auto size = vc->size();
+ DCPOMATIC_ASSERT(size);
+
+ CustomScaleDialog dialog(this, *size, _parent->film()->frame_size(), vc->custom_ratio(), vc->custom_size());
if (dialog.ShowModal() != wxID_OK) {
return false;
}