Blender V4.3
intern/autotrack.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2014 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#include "intern/autotrack.h"
6#include "intern/tracksN.h"
9
12using mv::AutoTrack;
14using mv::Marker;
15
20
22 LIBMV_OBJECT_DELETE(libmv_autotrack, AutoTrack);
23}
24
27 AutoTrack* autotrack = ((AutoTrack*)libmv_autotrack);
29 &autotrack->options.track_region);
30
31 autotrack->options.search_region.min(0) = options->search_region.min[0];
32 autotrack->options.search_region.min(1) = options->search_region.min[1];
33 autotrack->options.search_region.max(0) = options->search_region.max[0];
34 autotrack->options.search_region.max(1) = options->search_region.max[1];
35}
36
38 const libmv_TrackRegionOptions* libmv_options,
39 libmv_Marker* libmv_tracked_marker,
40 libmv_TrackRegionResult* libmv_result) {
41 Marker tracked_marker;
44 libmv_apiMarkerToMarker(*libmv_tracked_marker, &tracked_marker);
46 bool ok = (((AutoTrack*)libmv_autotrack)
47 ->TrackMarker(&tracked_marker, &result, &options));
48 libmv_markerToApiMarker(tracked_marker, libmv_tracked_marker);
49 libmv_regionTrackergetResult(result, libmv_result);
50 return ok && result.is_usable();
51}
52
54 const libmv_Marker* libmv_marker) {
55 Marker marker;
56 libmv_apiMarkerToMarker(*libmv_marker, &marker);
57 ((AutoTrack*)libmv_autotrack)->AddMarker(marker);
58}
59
61 const libmv_Marker* libmv_marker,
62 size_t num_markers) {
63 if (num_markers == 0) {
64 // Early output.
65 return;
66 }
68 markers.resize(num_markers);
69 for (size_t i = 0; i < num_markers; ++i) {
70 libmv_apiMarkerToMarker(libmv_marker[i], &markers[i]);
71 }
72 ((AutoTrack*)libmv_autotrack)->SetMarkers(&markers);
73}
74
76 int clip,
77 int frame,
78 int track,
79 libmv_Marker* libmv_marker) {
80 Marker marker;
81 int ok =
82 ((AutoTrack*)libmv_autotrack)->GetMarker(clip, frame, track, &marker);
83 if (ok) {
84 libmv_markerToApiMarker(marker, libmv_marker);
85 }
86 return ok;
87}
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:13
void libmv_markerToApiMarker(const Marker &marker, libmv_Marker *libmv_marker)
Definition tracksN.cc:37
#define LIBMV_OBJECT_NEW(type,...)
Definition utildefines.h:39
#define LIBMV_OBJECT_DELETE(what, type)
Definition utildefines.h:42