+ 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 %1 fps. This frame rate is not supported by all projectors. You may want to consider changing your frame rate to %2 fps."), 25, 24);
+ if (film->interop()) {
+ base += " ";
+ base += _("If you do use 25fps you should change your DCP standard to SMPTE.");
+ }
+ 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 %1 fps. This frame rate is not supported by all projectors. You are advised to change the DCP frame rate to %2 fps."), film->video_frame_rate(), film->video_frame_rate() / 2));
+ break;
+ }
+
+ optional<double> lowest_speed_up;
+ optional<double> highest_speed_up;
+ BOOST_FOREACH (shared_ptr<const Content> i, content) {
+ double spu = film->active_frame_rate_change(i->position()).speed_up;
+ if (!lowest_speed_up || spu < *lowest_speed_up) {
+ lowest_speed_up = spu;
+ }
+ if (!highest_speed_up || spu > *highest_speed_up) {
+ highest_speed_up = spu;
+ }
+ }
+
+ double worst_speed_up = 1;
+ if (highest_speed_up) {
+ worst_speed_up = *highest_speed_up;
+ }
+ if (lowest_speed_up) {
+ worst_speed_up = max (worst_speed_up, 1 / *lowest_speed_up);