X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fhints.cc;h=749fbb6763e8ca53b9a4bf2ac01411bea19b80d0;hb=9b4c2ae80d83d4e91c2fe9c6704a22aaeb3ee734;hp=6238aa991b7e6a2550f4518109694c3e932edc70;hpb=571a7747012498b6b181eb0b03adc47004b86666;p=dcpomatic.git diff --git a/src/lib/hints.cc b/src/lib/hints.cc index 6238aa991..749fbb676 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2016-2018 Carl Hetherington + Copyright (C) 2016-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -62,39 +62,29 @@ Hints::Hints (weak_ptr film) } void -Hints::stop_thread () +Hints::start () { - if (_thread) { - try { - { - boost::mutex::scoped_lock lm (_mutex); - _stop = true; - } - _thread->interrupt (); - _thread->join (); - } catch (...) { - - } - - delete _thread; - _thread = 0; - } + _thread = new boost::thread (bind(&Hints::thread, this)); } Hints::~Hints () { - stop_thread (); -} + if (!_thread) { + return; + } -void -Hints::start () -{ - stop_thread (); - _long_ccap = false; - _overlap_ccap = false; - _too_many_ccap_lines = false; - _stop = false; - _thread = new boost::thread (bind(&Hints::thread, this)); + try { + { + boost::mutex::scoped_lock lm (_mutex); + _stop = true; + } + _thread->interrupt (); + _thread->join (); + } catch (...) { + + } + + delete _thread; } void @@ -112,11 +102,9 @@ Hints::thread () BOOST_FOREACH (shared_ptr i, content) { BOOST_FOREACH (shared_ptr j, i->text) { BOOST_FOREACH (shared_ptr k, j->fonts()) { - for (int l = 0; l < FontFiles::VARIANTS; ++l) { - optional const p = k->file (static_cast(l)); - if (p && boost::filesystem::file_size (p.get()) >= (640 * 1024)) { - big_font_files = true; - } + optional const p = k->file (); + if (p && boost::filesystem::file_size(p.get()) >= (640 * 1024)) { + big_font_files = true; } } } @@ -167,24 +155,31 @@ Hints::thread () hint (_("A few projectors have problems playing back very high bit-rate DCPs. It is a good idea to drop the JPEG2000 bandwidth down to about 200Mbit/s; this is unlikely to have any visible effect on the image.")); } - if (film->interop() && film->video_frame_rate() != 24 && film->video_frame_rate() != 48) { - string base = _("You are set up for an Interop DCP at a frame rate which is not officially supported. You are advised either to change the frame rate of your DCP or to make a SMPTE DCP instead."); - base += " "; - pair range24 = film->speed_up_range (24); - pair range48 = film->speed_up_range (48); - pair range (max (range24.first, range48.first), min (range24.second, range48.second)); - string h; - if (range.second > (29.0/24)) { - h = base; - h += _("However, setting your DCP frame rate to 24 or 48 will cause a significant speed-up of your content, and SMPTE DCPs are not supported by all projectors."); - } else if (range.first < (24.0/29)) { - h = base; - h += _("However, setting your DCP frame rate to 24 or 48 will cause a significant slowdown of your content, and SMPTE DCPs are not supported by all projectors."); - } else { - h = _("You are set up for an Interop DCP at a frame rate which is not officially supported. You are advised either to change the frame rate of your DCP or to make a SMPTE DCP instead (although SMPTE DCPs are not supported by all projectors)."); + switch (film->video_frame_rate()) { + case 24: + /* Fine */ + break; + case 25: + { + /* You might want to go to 24 */ + string base = String::compose(_("You are set up for a DCP at a frame rate of %1fps. This frame rate is not supported by all projectors. You may want to consider changing your frame rate to %2fps."), 25, 24); + if (film->interop()) { + base += " "; + base += _("If you do use 25fps you should change your DCP standard to SMPTE."); } - - hint (h); + hint (base); + break; + } + case 30: + /* 30fps: we can't really offer any decent solutions */ + hint (_("You are set up for a DCP frame rate of 30fps, which is not supported by all projectors. Be aware that you may have compatibility problems.")); + break; + case 48: + case 50: + case 60: + /* You almost certainly want to go to half frame rate */ + hint (String::compose(_("You are set up for a DCP at a frame rate of %1fps. This frame rate is not supported by all projectors. You are advised to change the DCP frame rate to %2fps."), film->video_frame_rate(), film->video_frame_rate() / 2)); + break; } optional lowest_speed_up;