Blender  V3.3
intern/autotrack.cc
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2014 Blender Foundation. All rights reserved. */
3 
4 #include "intern/autotrack.h"
5 #include "intern/tracksN.h"
6 #include "intern/utildefines.h"
8 
11 using mv::AutoTrack;
12 using mv::FrameAccessor;
13 using mv::Marker;
14 
17  (FrameAccessor*)frame_accessor);
18 }
19 
20 void libmv_autoTrackDestroy(libmv_AutoTrack* libmv_autotrack) {
21  LIBMV_OBJECT_DELETE(libmv_autotrack, AutoTrack);
22 }
23 
26  AutoTrack* autotrack = ((AutoTrack*)libmv_autotrack);
28  &autotrack->options.track_region);
29 
30  autotrack->options.search_region.min(0) = options->search_region.min[0];
31  autotrack->options.search_region.min(1) = options->search_region.min[1];
32  autotrack->options.search_region.max(0) = options->search_region.max[0];
33  autotrack->options.search_region.max(1) = options->search_region.max[1];
34 }
35 
37  const libmv_TrackRegionOptions* libmv_options,
38  libmv_Marker* libmv_tracked_marker,
39  libmv_TrackRegionResult* libmv_result) {
40  Marker tracked_marker;
43  libmv_apiMarkerToMarker(*libmv_tracked_marker, &tracked_marker);
45  bool ok = (((AutoTrack*)libmv_autotrack)
46  ->TrackMarker(&tracked_marker, &result, &options));
47  libmv_markerToApiMarker(tracked_marker, libmv_tracked_marker);
48  libmv_regionTrackergetResult(result, libmv_result);
49  return ok && result.is_usable();
50 }
51 
53  const libmv_Marker* libmv_marker) {
54  Marker marker;
55  libmv_apiMarkerToMarker(*libmv_marker, &marker);
56  ((AutoTrack*)libmv_autotrack)->AddMarker(marker);
57 }
58 
60  const libmv_Marker* libmv_marker,
61  size_t num_markers) {
62  if (num_markers == 0) {
63  // Early output.
64  return;
65  }
67  markers.resize(num_markers);
68  for (size_t i = 0; i < num_markers; ++i) {
69  libmv_apiMarkerToMarker(libmv_marker[i], &markers[i]);
70  }
71  ((AutoTrack*)libmv_autotrack)->SetMarkers(&markers);
72 }
73 
75  int clip,
76  int frame,
77  int track,
78  libmv_Marker* libmv_marker) {
79  Marker marker;
80  int ok =
81  ((AutoTrack*)libmv_autotrack)->GetMarker(clip, frame, track, &marker);
82  if (ok) {
83  libmv_markerToApiMarker(marker, libmv_marker);
84  }
85  return ok;
86 }
CCL_NAMESPACE_BEGIN struct Options options
const vector< Marker > & markers
void libmv_autoTrackSetMarkers(libmv_AutoTrack *libmv_autotrack, const libmv_Marker *libmv_marker, size_t num_markers)
libmv_AutoTrack * libmv_autoTrackNew(libmv_FrameAccessor *frame_accessor)
int libmv_autoTrackMarker(libmv_AutoTrack *libmv_autotrack, const libmv_TrackRegionOptions *libmv_options, libmv_Marker *libmv_tracked_marker, libmv_TrackRegionResult *libmv_result)
void libmv_autoTrackSetOptions(libmv_AutoTrack *libmv_autotrack, const libmv_AutoTrackOptions *options)
void libmv_autoTrackDestroy(libmv_AutoTrack *libmv_autotrack)
int libmv_autoTrackGetMarker(libmv_AutoTrack *libmv_autotrack, int clip, int frame, int track, libmv_Marker *libmv_marker)
void libmv_autoTrackAddMarker(libmv_AutoTrack *libmv_autotrack, const libmv_Marker *libmv_marker)
struct libmv_AutoTrack libmv_AutoTrack
struct libmv_FrameAccessor libmv_FrameAccessor
void libmv_configureTrackRegionOptions(const libmv_TrackRegionOptions &options, TrackRegionOptions *track_region_options)
void libmv_regionTrackergetResult(const TrackRegionResult &track_region_result, libmv_TrackRegionResult *result)
std::vector< ElementType, Eigen::aligned_allocator< ElementType > > vector
void libmv_apiMarkerToMarker(const libmv_Marker &libmv_marker, Marker *marker)
Definition: tracksN.cc:12
void libmv_markerToApiMarker(const Marker &marker, libmv_Marker *libmv_marker)
Definition: tracksN.cc:36
#define LIBMV_OBJECT_NEW(type,...)
Definition: utildefines.h:38
#define LIBMV_OBJECT_DELETE(what, type)
Definition: utildefines.h:41