diff options
author | Robin Gareus <robin@gareus.org> | 2015-06-09 23:26:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-06-09 23:26:43 +0200 |
commit | aad43bce4a1214060e858fbc7666e03e7f21a901 (patch) | |
tree | 81f1e522f8be5635f10bcb518b86cccc29ed58fe /gtk2_ardour/video_timeline.cc | |
parent | 9a8d5583f4cce2ca3e79cd384b85f846f1667c51 (diff) |
fix video-image request, zoom before video start.
Diffstat (limited to 'gtk2_ardour/video_timeline.cc')
-rw-r--r-- | gtk2_ardour/video_timeline.cc | 12 |
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; } |