diff options
Diffstat (limited to 'intern/libmv/libmv/autotrack/autotrack.cc')
-rw-r--r-- | intern/libmv/libmv/autotrack/autotrack.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/intern/libmv/libmv/autotrack/autotrack.cc b/intern/libmv/libmv/autotrack/autotrack.cc index c18567a5f28..afdf48912e5 100644 --- a/intern/libmv/libmv/autotrack/autotrack.cc +++ b/intern/libmv/libmv/autotrack/autotrack.cc @@ -115,14 +115,27 @@ FrameAccessor::Key GetMaskForMarker(const Marker& marker, marker.clip, marker.frame, marker.track, ®ion, mask); } +PredictDirection getPredictDirection(const TrackRegionOptions* track_options) { + switch (track_options->direction) { + case TrackRegionOptions::FORWARD: return PredictDirection::FORWARD; + case TrackRegionOptions::BACKWARD: return PredictDirection::BACKWARD; + } + + LOG(FATAL) << "Unhandled tracking direction " << track_options->direction + << ", should never happen."; + + return PredictDirection::AUTO; +} + } // namespace bool AutoTrack::TrackMarker(Marker* tracked_marker, TrackRegionResult* result, const TrackRegionOptions* track_options) { // Try to predict the location of the second marker. + const PredictDirection predict_direction = getPredictDirection(track_options); bool predicted_position = false; - if (PredictMarkerPosition(tracks_, tracked_marker)) { + if (PredictMarkerPosition(tracks_, predict_direction, tracked_marker)) { LG << "Successfully predicted!"; predicted_position = true; } else { |