summaryrefslogtreecommitdiff
path: root/gtk2_ardour/video_timeline.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-06-09 23:26:43 +0200
committerRobin Gareus <robin@gareus.org>2015-06-09 23:26:43 +0200
commitaad43bce4a1214060e858fbc7666e03e7f21a901 (patch)
tree81f1e522f8be5635f10bcb518b86cccc29ed58fe /gtk2_ardour/video_timeline.cc
parent9a8d5583f4cce2ca3e79cd384b85f846f1667c51 (diff)
fix video-image request, zoom before video start.
Diffstat (limited to 'gtk2_ardour/video_timeline.cc')
-rw-r--r--gtk2_ardour/video_timeline.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc
index eed09fdb23..a1dd4bcfbb 100644
--- a/gtk2_ardour/video_timeline.cc
+++ b/gtk2_ardour/video_timeline.cc
@@ -356,16 +356,20 @@ VideoTimeLine::update_video_timeline()
vtl_start -= visible_video_frames * vtl_dist;
visible_video_frames *=3;
- if (vtl_start < video_offset ) {
- visible_video_frames += ceil((double)vtl_start/vtl_dist);
+ /* don't request frames that are too far to the right */
+ if (vtl_start < video_offset) {
+ visible_video_frames = std::max((double)0.0, (double)visible_video_frames + ceil((double)(vtl_start - video_offset)/vtl_dist));
vtl_start = video_offset;
}
- /* apply video-file constraints */
+ /* apply video-file constraints
+ * (first frame in video is at video_start_offset) */
if (vtl_start > video_start_offset + video_duration + video_offset ) {
visible_video_frames = 0;
}
- /* TODO optimize: compute rather than iterate */
+ /* trim end.
+ * end = position on timeline (video-offset) minus video-file's first frame position
+ * TODO optimize: compute rather than iterate */
while (visible_video_frames > 0 && vtl_start + (visible_video_frames-1) * vtl_dist >= video_start_offset + video_duration + video_offset) {
--visible_video_frames;
}