diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-13 22:14:22 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-13 22:14:22 +0000 |
| commit | e2cf12c4cbdad8aa54072e606d0ffe44a4c24398 (patch) | |
| tree | d2d97213a38b161ce034b75396808c1541002a73 /src | |
| parent | a19812faefcc407781030791d4900a90f5c7f463 (diff) | |
Fix incorrect fades when trim is being used.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/video_content.cc | 8 |
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(); } |
