diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-10-22 14:15:19 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-10-22 14:15:19 +0100 |
| commit | db67e0d5c855127862bb8dd579d41e4a11f84798 (patch) | |
| tree | bbd06adc2e72847fd23dcd7a81c26b67ce2f5174 /src/lib | |
| parent | 4f466f9d204c19f9085d0a8cc9e9daaa2228371d (diff) | |
Make repeat a number rather than a bool.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/player.cc | 5 | ||||
| -rw-r--r-- | src/lib/util.cc | 18 | ||||
| -rw-r--r-- | src/lib/util.h | 8 |
3 files changed, 14 insertions, 17 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index f79265558..8f6a8bb35 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -247,11 +247,6 @@ Player::process_video (weak_ptr<Piece> weak_piece, shared_ptr<const Image> image Video (work_image, eyes, content->colour_conversion(), same, time); time += TIME_HZ / _film->video_frame_rate(); - if (frc.repeat) { - Video (work_image, eyes, content->colour_conversion(), true, time); - time += TIME_HZ / _film->video_frame_rate(); - } - _last_emit_was_black = false; _video_position = piece->video_position = time; diff --git a/src/lib/util.cc b/src/lib/util.cc index 1c4347233..4880e5ced 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -744,7 +744,7 @@ audio_channel_name (int c) assert (MAX_AUDIO_CHANNELS == 6); /* TRANSLATORS: these are the names of audio channels; Lfe (sub) is the low-frequency - enhancement channel (sub-woofer)./ + enhancement channel (sub-woofer). */ string const channels[] = { _("Left"), @@ -760,24 +760,28 @@ audio_channel_name (int c) FrameRateConversion::FrameRateConversion (float source, int dcp) : skip (false) - , repeat (false) + , repeat (1) , change_speed (false) { - if (fabs (source / 2.0 - dcp) < (fabs (source - dcp))) { + if (source > (dcp * 2)) { skip = true; - } else if (fabs (source * 2 - dcp) < fabs (source - dcp)) { - repeat = true; + } + + if (source < dcp) { + repeat = floor (source / dcp); } change_speed = !about_equal (source * factor(), dcp); - if (!skip && !repeat && !change_speed) { + if (!skip && repeat == 1 && !change_speed) { description = _("Content and DCP have the same rate.\n"); } else { if (skip) { description = _("DCP will use every other frame of the content.\n"); - } else if (repeat) { + } else if (repeat == 2) { description = _("Each content frame will be doubled in the DCP.\n"); + } else if (repeat > 2) { + description = String::compose (_("Each content frame will be repeated %1 more times in the DCP.\n"), repeat - 1); } if (change_speed) { diff --git a/src/lib/util.h b/src/lib/util.h index b8ea6ebec..70cb3bb0c 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -88,17 +88,15 @@ struct FrameRateConversion float factor () const { if (skip) { return 0.5; - } else if (repeat) { - return 2; } - return 1; + return repeat; } /** true to skip every other frame */ bool skip; - /** true to repeat every frame once */ - bool repeat; + /** number of times to use each frame (e.g. 1 is normal, 2 means repeat each frame once, and so on) */ + int repeat; /** true if this DCP will run its video faster or slower than the source * without taking into account `repeat' nor `skip'. * (e.g. change_speed will be true if |
