diff options
Diffstat (limited to 'extern/libmv/intern/tracksN.h')
-rw-r--r-- | extern/libmv/intern/tracksN.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/extern/libmv/intern/tracksN.h b/extern/libmv/intern/tracksN.h new file mode 100644 index 00000000000..ea8b3e8a4f8 --- /dev/null +++ b/extern/libmv/intern/tracksN.h @@ -0,0 +1,122 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2011 Blender Foundation. + * All rights reserved. + * + * Contributor(s): Blender Foundation, + * Sergey Sharybin + * + * ***** END GPL LICENSE BLOCK ***** + */ + +// TODO(serrgey): For the time being we're converting simple pipeline +// to an autotrack pipeline we call it tracks. +// Once we've done with porting we remove N. + +#ifndef LIBMV_C_API_TRACKSN_H_ +#define LIBMV_C_API_TRACKSN_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct libmv_TracksN libmv_TracksN; + +// Keep order in this enums exactly the same as in mv::Marker. +// Otherwise API wouldn't convert the values properly. +typedef enum libmv_MarkerSource { + LIBMV_MARKER_SOURCE_MANUAL, + LIBMV_MARKER_SOURCE_DETECTED, + LIBMV_MARKER_SOURCE_TRACKED, + LIBMV_MARKER_SOURCE_MATCHED, + LIBMV_MARKER_SOURCE_PREDICTED, +} libmv_MarkerSource; + +typedef enum libmv_MarkerStatus { + LIBMV_MARKER_STATUS_UNKNOWN, + LIBMV_MARKER_STATUS_INLIER, + LIBMV_MARKER_STATUS_OUTLIER, +} libmv_MarkerStatus; + +typedef enum libmv_MarkerModelType { + LIBMV_MARKER_MODEL_TYPE_POINT, + LIBMV_MARKER_MODEL_TYPE_PLANE, + LIBMV_MARKER_MODEL_TYPE_LINE, + LIBMV_MARKER_MODEL_TYPE_CUBE, +} libmv_MarkerModelType; + +typedef struct libmv_Marker { + int clip; + int frame; + int track; + float center[2]; + float patch[4][2]; + float search_region_min[2]; + float search_region_max[2]; + float weight; + libmv_MarkerSource source; + libmv_MarkerStatus status; + int reference_clip; + int reference_frame; + libmv_MarkerModelType model_type; + int model_id; +} libmv_Marker; + +#ifdef __cplusplus +namespace mv { + class Marker; +} +void libmv_apiMarkerToMarker(const libmv_Marker& libmv_marker, + mv::Marker *marker); + +void libmv_markerToApiMarker(const mv::Marker& marker, + libmv_Marker *libmv_marker); +#endif + +libmv_TracksN* libmv_tracksNewN(void); + +void libmv_tracksDestroyN(libmv_TracksN* libmv_tracks); + + +void libmv_tracksAddMarkerN(libmv_TracksN* libmv_tracks, + const libmv_Marker* libmv_marker); + +void libmv_tracksGetMarkerN(libmv_TracksN* libmv_tracks, + int clip, + int frame, + int track, + libmv_Marker* libmv_marker); + +void libmv_tracksRemoveMarkerN(libmv_TracksN* libmv_tracks, + int clip, + int frame, + int track); + +void libmv_tracksRemoveMarkersForTrack(libmv_TracksN* libmv_tracks, + int track); + +int libmv_tracksMaxClipN(libmv_TracksN* libmv_tracks); +int libmv_tracksMaxFrameN(libmv_TracksN* libmv_tracks, int clip); +int libmv_tracksMaxTrackN(libmv_TracksN* libmv_tracks); +int libmv_tracksNumMarkersN(libmv_TracksN* libmv_tracks); + +#ifdef __cplusplus +} +#endif + +#endif // LIBMV_C_API_TRACKS_H_ |