summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-10-22 14:15:19 +0100
committerCarl Hetherington <cth@carlh.net>2013-10-22 14:15:19 +0100
commitdb67e0d5c855127862bb8dd579d41e4a11f84798 (patch)
treebbd06adc2e72847fd23dcd7a81c26b67ce2f5174 /src/lib
parent4f466f9d204c19f9085d0a8cc9e9daaa2228371d (diff)
Make repeat a number rather than a bool.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/player.cc5
-rw-r--r--src/lib/util.cc18
-rw-r--r--src/lib/util.h8
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