summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-13 22:14:22 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-13 22:14:22 +0000
commite2cf12c4cbdad8aa54072e606d0ffe44a4c24398 (patch)
treed2d97213a38b161ce034b75396808c1541002a73 /src
parenta19812faefcc407781030791d4900a90f5c7f463 (diff)
Fix incorrect fades when trim is being used.
Diffstat (limited to 'src')
-rw-r--r--src/lib/video_content.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index 7321fc7c5..d104004f2 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -490,16 +490,18 @@ VideoContent::set_video_frame_rate (double r)
signal_changed (VideoContentProperty::VIDEO_FRAME_RATE);
}
+/** @param f Frame index within the whole (untrimmed) content */
optional<double>
VideoContent::fade (Frame f) const
{
DCPOMATIC_ASSERT (f >= 0);
- if (f < fade_in()) {
- return double (f) / fade_in();
+ Frame const ts = trim_start().frames_round(video_frame_rate());
+ if ((f - ts) < fade_in()) {
+ return double (f - ts) / fade_in();
}
- Frame fade_out_start = video_length() - fade_out();
+ Frame fade_out_start = video_length() - trim_end().frames_round(video_frame_rate()) - fade_out();
if (f >= fade_out_start) {
return 1 - double (f - fade_out_start) / fade_out();
}