|
Blender
V2.93
|
#include <stddef.h>#include "MEM_guardedalloc.h"#include "DNA_movieclip_types.h"#include "BLI_ghash.h"#include "BLI_listbase.h"#include "BLI_math.h"#include "BLI_string.h"#include "BLI_string_utils.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BLT_translation.h"#include "BKE_movieclip.h"#include "BKE_tracking.h"#include "IMB_imbuf.h"#include "IMB_imbuf_types.h"#include "IMB_moviecache.h"#include "tracking_private.h"#include "libmv-capi.h"Go to the source code of this file.
Macros | |
| #define | CACHE_PRINTF(...) |
Functions | |
Tracks Map | |
| TracksMap * | tracks_map_new (const char *object_name, bool is_camera, int num_tracks, int customdata_size) |
| int | tracks_map_get_size (TracksMap *map) |
| void | tracks_map_get_indexed_element (TracksMap *map, int index, MovieTrackingTrack **track, void **customdata) |
| void | tracks_map_insert (TracksMap *map, MovieTrackingTrack *track, void *customdata) |
| void | tracks_map_merge (TracksMap *map, MovieTracking *tracking) |
| void | tracks_map_free (TracksMap *map, void(*customdata_free)(void *customdata)) |
Space Transformation Functions | |
| static void | unified_to_pixel (int frame_width, int frame_height, const float unified_coords[2], float pixel_coords[2]) |
| static void | marker_to_frame_unified (const MovieTrackingMarker *marker, const float marker_unified_coords[2], float frame_unified_coords[2]) |
| static void | marker_unified_to_frame_pixel_coordinates (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float marker_unified_coords[2], float frame_pixel_coords[2]) |
| void | tracking_get_search_origin_frame_pixel (int frame_width, int frame_height, const MovieTrackingMarker *marker, float frame_pixel[2]) |
| static void | pixel_to_unified (int frame_width, int frame_height, const float pixel_coords[2], float unified_coords[2]) |
| static void | marker_unified_to_search_pixel (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float marker_unified[2], float search_pixel[2]) |
| static void | search_pixel_to_marker_unified (int frame_width, int frame_height, const MovieTrackingMarker *marker, const float search_pixel[2], float marker_unified[2]) |
| void | tracking_get_marker_coords_for_tracking (int frame_width, int frame_height, const MovieTrackingMarker *marker, double search_pixel_x[5], double search_pixel_y[5]) |
| void | tracking_set_marker_coords_from_tracking (int frame_width, int frame_height, MovieTrackingMarker *marker, const double search_pixel_x[5], const double search_pixel_y[5]) |
General Purpose Utility Functions | |
| void | tracking_marker_insert_disabled (MovieTrackingTrack *track, const MovieTrackingMarker *ref_marker, bool before, bool overwrite) |
| static void | distortion_model_parameters_from_tracking (const MovieTrackingCamera *camera, libmv_CameraIntrinsicsOptions *camera_intrinsics_options) |
| static void | distortion_model_parameters_from_options (const libmv_CameraIntrinsicsOptions *camera_intrinsics_options, MovieTrackingCamera *camera) |
| void | tracking_cameraIntrinscisOptionsFromTracking (MovieTracking *tracking, int calibration_width, int calibration_height, libmv_CameraIntrinsicsOptions *camera_intrinsics_options) |
| void | tracking_trackingCameraFromIntrinscisOptions (MovieTracking *tracking, const libmv_CameraIntrinsicsOptions *camera_intrinsics_options) |
| MovieTrackingMarker * | tracking_get_keyframed_marker (MovieTrackingTrack *track, int current_frame, bool backwards) |
Frame Accessor | |
| static ImBuf * | accessor_get_preprocessed_ibuf (TrackingImageAccessor *accessor, int clip_index, int frame) |
| static ImBuf * | make_grayscale_ibuf_copy (ImBuf *ibuf) |
| static void | ibuf_to_float_image (const ImBuf *ibuf, libmv_FloatImage *float_image) |
| static ImBuf * | float_image_to_ibuf (libmv_FloatImage *float_image) |
| static ImBuf * | accessor_get_ibuf (TrackingImageAccessor *accessor, int clip_index, int frame, libmv_InputMode input_mode, int downscale, const libmv_Region *region, const libmv_FrameTransform *transform) |
| static libmv_CacheKey | accessor_get_image_callback (struct libmv_FrameAccessorUserData *user_data, int clip_index, int frame, libmv_InputMode input_mode, int downscale, const libmv_Region *region, const libmv_FrameTransform *transform, float **destination, int *width, int *height, int *channels) |
| static void | accessor_release_image_callback (libmv_CacheKey cache_key) |
| static libmv_CacheKey | accessor_get_mask_for_track_callback (libmv_FrameAccessorUserData *user_data, int clip_index, int frame, int track_index, const libmv_Region *region, float **r_destination, int *r_width, int *r_height) |
| static void | accessor_release_mask_callback (libmv_CacheKey cache_key) |
| TrackingImageAccessor * | tracking_image_accessor_new (MovieClip *clips[MAX_ACCESSOR_CLIP], int num_clips, MovieTrackingTrack **tracks, int num_tracks) |
| void | tracking_image_accessor_destroy (TrackingImageAccessor *accessor) |
This file contains implementation of function which are used by multiple tracking files but which should not be public.
Definition in file tracking_util.c.
| #define CACHE_PRINTF | ( | ... | ) |
Definition at line 60 of file tracking_util.c.
|
static |
Definition at line 703 of file tracking_util.c.
References accessor_get_preprocessed_ibuf(), BLI_assert, BLI_thread_lock(), BLI_thread_unlock(), CACHE_PRINTF, ImBuf::channels, ELEM, float_image_to_ibuf(), height, IB_rectfloat, ibuf_to_float_image(), IMB_allocImBuf(), IMB_dupImBuf(), IMB_float_from_rect(), IMB_freeImBuf(), IMB_rectcpy(), IMB_scaleImBuf(), libmv_floatImageDestroy(), libmv_frameAccessorgetTransformRun(), LIBMV_IMAGE_MODE_MONO, LIBMV_IMAGE_MODE_RGBA, LOCK_MOVIECLIP, make_grayscale_ibuf_copy(), libmv_Region::max, max_ii(), libmv_Region::min, min_ii(), NULL, ImBuf::rect, ImBuf::rect_float, rgba_uchar_to_float(), transform(), width, x, ImBuf::x, y, and ImBuf::y.
Referenced by accessor_get_image_callback().
|
static |
Definition at line 821 of file tracking_util.c.
References accessor_get_ibuf(), BLI_assert, ImBuf::channels, height, NULL, ImBuf::rect_float, transform(), user_data, width, ImBuf::x, and ImBuf::y.
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 862 of file tracking_util.c.
References MovieTrackingTrack::algorithm_flag, BKE_movieclip_get_size(), BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_user_set_frame(), BKE_tracking_marker_get_exact(), BLI_assert, TrackingImageAccessor::clips, libmv_Region::max, MCLIP_PROXY_RENDER_SIZE_FULL, libmv_Region::min, NULL, MovieTrackingMarker::pos, MovieClipUser::render_flag, MovieClipUser::render_size, TRACK_ALGORITHM_FLAG_USE_MASK, tracking_track_get_mask_for_region(), TrackingImageAccessor::tracks, and user_data.
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 632 of file tracking_util.c.
References BKE_movieclip_get_ibuf(), BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_user_set_frame(), BLI_assert, TrackingImageAccessor::clips, MCLIP_PROXY_RENDER_SIZE_FULL, MovieClipUser::render_flag, and MovieClipUser::render_size.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 856 of file tracking_util.c.
References IMB_freeImBuf().
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 909 of file tracking_util.c.
References mask(), MEM_freeN, and NULL.
Referenced by tracking_image_accessor_new().
|
static |
Definition at line 491 of file tracking_util.c.
References BLI_assert, libmv_CameraIntrinsicsOptions::brown_k1, MovieTrackingCamera::brown_k1, libmv_CameraIntrinsicsOptions::brown_k2, MovieTrackingCamera::brown_k2, libmv_CameraIntrinsicsOptions::brown_k3, MovieTrackingCamera::brown_k3, libmv_CameraIntrinsicsOptions::brown_k4, MovieTrackingCamera::brown_k4, libmv_CameraIntrinsicsOptions::brown_p1, MovieTrackingCamera::brown_p1, libmv_CameraIntrinsicsOptions::brown_p2, MovieTrackingCamera::brown_p2, libmv_CameraIntrinsicsOptions::distortion_model, MovieTrackingCamera::distortion_model, libmv_CameraIntrinsicsOptions::division_k1, MovieTrackingCamera::division_k1, libmv_CameraIntrinsicsOptions::division_k2, MovieTrackingCamera::division_k2, MovieTrackingCamera::k1, MovieTrackingCamera::k2, MovieTrackingCamera::k3, LIBMV_DISTORTION_MODEL_BROWN, LIBMV_DISTORTION_MODEL_DIVISION, LIBMV_DISTORTION_MODEL_NUKE, LIBMV_DISTORTION_MODEL_POLYNOMIAL, libmv_CameraIntrinsicsOptions::nuke_k1, MovieTrackingCamera::nuke_k1, libmv_CameraIntrinsicsOptions::nuke_k2, MovieTrackingCamera::nuke_k2, libmv_CameraIntrinsicsOptions::polynomial_k1, libmv_CameraIntrinsicsOptions::polynomial_k2, libmv_CameraIntrinsicsOptions::polynomial_k3, TRACKING_DISTORTION_MODEL_BROWN, TRACKING_DISTORTION_MODEL_DIVISION, TRACKING_DISTORTION_MODEL_NUKE, and TRACKING_DISTORTION_MODEL_POLYNOMIAL.
Referenced by tracking_trackingCameraFromIntrinscisOptions().
|
static |
Definition at line 446 of file tracking_util.c.
References libmv_CameraIntrinsicsOptions::brown_k1, MovieTrackingCamera::brown_k1, libmv_CameraIntrinsicsOptions::brown_k2, MovieTrackingCamera::brown_k2, libmv_CameraIntrinsicsOptions::brown_k3, MovieTrackingCamera::brown_k3, libmv_CameraIntrinsicsOptions::brown_k4, MovieTrackingCamera::brown_k4, libmv_CameraIntrinsicsOptions::brown_p1, MovieTrackingCamera::brown_p1, libmv_CameraIntrinsicsOptions::brown_p2, MovieTrackingCamera::brown_p2, libmv_CameraIntrinsicsOptions::distortion_model, MovieTrackingCamera::distortion_model, libmv_CameraIntrinsicsOptions::division_k1, MovieTrackingCamera::division_k1, libmv_CameraIntrinsicsOptions::division_k2, MovieTrackingCamera::division_k2, MovieTrackingCamera::k1, MovieTrackingCamera::k2, MovieTrackingCamera::k3, LIBMV_DISTORTION_MODEL_BROWN, LIBMV_DISTORTION_MODEL_DIVISION, LIBMV_DISTORTION_MODEL_NUKE, LIBMV_DISTORTION_MODEL_POLYNOMIAL, libmv_CameraIntrinsicsOptions::nuke_k1, MovieTrackingCamera::nuke_k1, libmv_CameraIntrinsicsOptions::nuke_k2, MovieTrackingCamera::nuke_k2, libmv_CameraIntrinsicsOptions::polynomial_k1, libmv_CameraIntrinsicsOptions::polynomial_k2, libmv_CameraIntrinsicsOptions::polynomial_k3, libmv_CameraIntrinsicsOptions::polynomial_p1, libmv_CameraIntrinsicsOptions::polynomial_p2, TRACKING_DISTORTION_MODEL_BROWN, TRACKING_DISTORTION_MODEL_DIVISION, TRACKING_DISTORTION_MODEL_NUKE, and TRACKING_DISTORTION_MODEL_POLYNOMIAL.
Referenced by tracking_cameraIntrinscisOptionsFromTracking().
|
static |
Definition at line 689 of file tracking_util.c.
References libmv_FloatImage::buffer, libmv_FloatImage::channels, ImBuf::channels, ImBuf::flags, float(), libmv_FloatImage::height, IB_rectfloat, IMB_allocImBuf(), ImBuf::mall, MEM_callocN, NULL, ImBuf::rect_float, size(), libmv_FloatImage::width, ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 680 of file tracking_util.c.
References BLI_assert, libmv_FloatImage::buffer, libmv_FloatImage::channels, ImBuf::channels, libmv_FloatImage::height, NULL, ImBuf::rect_float, libmv_FloatImage::width, ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
Definition at line 653 of file tracking_util.c.
References BLI_assert, ImBuf::channels, ELEM, ImBuf::flags, float(), IB_rectfloat, IMB_allocImBuf(), ImBuf::mall, MEM_callocN, NULL, ImBuf::rect_float, size(), ImBuf::x, and ImBuf::y.
Referenced by accessor_get_ibuf().
|
static |
Definition at line 268 of file tracking_util.c.
References MovieTrackingMarker::pos.
Referenced by marker_unified_to_frame_pixel_coordinates().
|
static |
Definition at line 276 of file tracking_util.c.
References marker_to_frame_unified(), and unified_to_pixel().
Referenced by marker_unified_to_search_pixel(), and tracking_get_search_origin_frame_pixel().
|
static |
Definition at line 307 of file tracking_util.c.
References marker_unified_to_frame_pixel_coordinates(), sub_v2_v2v2(), and tracking_get_search_origin_frame_pixel().
Referenced by tracking_get_marker_coords_for_tracking().
|
static |
Definition at line 298 of file tracking_util.c.
Referenced by search_pixel_to_marker_unified().
|
static |
Definition at line 323 of file tracking_util.c.
References add_v2_v2v2(), pixel_to_unified(), MovieTrackingMarker::pos, sub_v2_v2v2(), and tracking_get_search_origin_frame_pixel().
Referenced by tracking_set_marker_coords_from_tracking().
| void tracking_cameraIntrinscisOptionsFromTracking | ( | MovieTracking * | tracking, |
| int | calibration_width, | ||
| int | calibration_height, | ||
| libmv_CameraIntrinsicsOptions * | camera_intrinsics_options | ||
| ) |
Definition at line 530 of file tracking_util.c.
References BLI_system_thread_count(), MovieTracking::camera, distortion_model_parameters_from_tracking(), MovieTrackingCamera::focal, libmv_CameraIntrinsicsOptions::focal_length, libmv_CameraIntrinsicsOptions::image_height, libmv_CameraIntrinsicsOptions::image_width, libmv_CameraIntrinsicsOptions::num_threads, MovieTrackingCamera::pixel_aspect, MovieTrackingCamera::principal, libmv_CameraIntrinsicsOptions::principal_point_x, and libmv_CameraIntrinsicsOptions::principal_point_y.
Referenced by BKE_tracking_distort_v2(), BKE_tracking_distortion_new(), BKE_tracking_distortion_update(), BKE_tracking_reconstruction_context_new(), and BKE_tracking_undistort_v2().
| MovieTrackingMarker* tracking_get_keyframed_marker | ( | MovieTrackingTrack * | track, |
| int | current_frame, | ||
| bool | backwards | ||
| ) |
Definition at line 567 of file tracking_util.c.
References Freestyle::a, BKE_tracking_marker_get(), MovieTrackingMarker::flag, MARKER_DISABLED, MARKER_TRACKED, MovieTrackingTrack::markers, next, and NULL.
Referenced by dna_marker_to_libmv_marker(), and tracking_context_get_keyframed_ibuf().
| void tracking_get_marker_coords_for_tracking | ( | int | frame_width, |
| int | frame_height, | ||
| const MovieTrackingMarker * | marker, | ||
| double | search_pixel_x[5], | ||
| double | search_pixel_y[5] | ||
| ) |
Definition at line 346 of file tracking_util.c.
References marker_unified_to_search_pixel(), and MovieTrackingMarker::pattern_corners.
Referenced by BKE_tracking_sample_pattern(), and configure_and_run_tracker().
| void tracking_get_search_origin_frame_pixel | ( | int | frame_width, |
| int | frame_height, | ||
| const MovieTrackingMarker * | marker, | ||
| float | frame_pixel[2] | ||
| ) |
Definition at line 286 of file tracking_util.c.
References marker_unified_to_frame_pixel_coordinates(), and MovieTrackingMarker::search_min.
Referenced by BKE_tracking_get_search_imbuf(), marker_unified_to_search_pixel(), and search_pixel_to_marker_unified().
| void tracking_image_accessor_destroy | ( | TrackingImageAccessor * | accessor | ) |
Definition at line 946 of file tracking_util.c.
References BLI_spin_end(), TrackingImageAccessor::cache_lock, TrackingImageAccessor::libmv_accessor, libmv_FrameAccessorDestroy(), MEM_freeN, and TrackingImageAccessor::tracks.
Referenced by BKE_autotrack_context_free().
| TrackingImageAccessor* tracking_image_accessor_new | ( | MovieClip * | clips[MAX_ACCESSOR_CLIP], |
| int | num_clips, | ||
| MovieTrackingTrack ** | tracks, | ||
| int | num_tracks | ||
| ) |
Definition at line 917 of file tracking_util.c.
References accessor_get_image_callback(), accessor_get_mask_for_track_callback(), accessor_release_image_callback(), accessor_release_mask_callback(), BLI_assert, BLI_spin_init(), TrackingImageAccessor::cache_lock, TrackingImageAccessor::clips, TrackingImageAccessor::libmv_accessor, libmv_FrameAccessorNew(), MAX_ACCESSOR_CLIP, MEM_callocN, MEM_malloc_arrayN, TrackingImageAccessor::num_clips, TrackingImageAccessor::num_tracks, tracks, and TrackingImageAccessor::tracks.
Referenced by autotrack_context_init_image_accessor().
| void tracking_marker_insert_disabled | ( | MovieTrackingTrack * | track, |
| const MovieTrackingMarker * | ref_marker, | ||
| bool | before, | ||
| bool | overwrite | ||
| ) |
Definition at line 423 of file tracking_util.c.
References BKE_tracking_marker_insert(), BKE_tracking_track_has_marker_at_frame(), MovieTrackingMarker::flag, MovieTrackingMarker::framenr, MARKER_DISABLED, and MARKER_TRACKED.
Referenced by BKE_autotrack_context_sync(), and BKE_tracking_track_path_clear().
| void tracking_set_marker_coords_from_tracking | ( | int | frame_width, |
| int | frame_height, | ||
| MovieTrackingMarker * | marker, | ||
| const double | search_pixel_x[5], | ||
| const double | search_pixel_y[5] | ||
| ) |
Definition at line 373 of file tracking_util.c.
References MovieTrackingMarker::pattern_corners, MovieTrackingMarker::pos, and search_pixel_to_marker_unified().
Referenced by BKE_tracking_refine_marker().
| void tracking_trackingCameraFromIntrinscisOptions | ( | MovieTracking * | tracking, |
| const libmv_CameraIntrinsicsOptions * | camera_intrinsics_options | ||
| ) |
Definition at line 552 of file tracking_util.c.
References MovieTracking::camera, distortion_model_parameters_from_options(), double(), MovieTrackingCamera::focal, libmv_CameraIntrinsicsOptions::focal_length, MovieTrackingCamera::pixel_aspect, MovieTrackingCamera::principal, libmv_CameraIntrinsicsOptions::principal_point_x, and libmv_CameraIntrinsicsOptions::principal_point_y.
Referenced by reconstruct_retrieve_libmv_intrinsics().
| void tracks_map_free | ( | TracksMap * | map, |
| void(*)(void *customdata) | customdata_free | ||
| ) |
Definition at line 224 of file tracking_util.c.
References BKE_tracking_track_free(), BLI_ghash_free(), BLI_spin_end(), TracksMap::customdata, TracksMap::customdata_size, TracksMap::hash, MEM_freeN, NULL, TracksMap::num_tracks, TracksMap::spin_lock, and TracksMap::tracks.
Referenced by BKE_tracking_reconstruction_context_free().
| void tracks_map_get_indexed_element | ( | TracksMap * | map, |
| int | index, | ||
| MovieTrackingTrack ** | track, | ||
| void ** | customdata | ||
| ) |
Definition at line 98 of file tracking_util.c.
References TracksMap::customdata, TracksMap::customdata_size, and TracksMap::tracks.
| int tracks_map_get_size | ( | TracksMap * | map | ) |
Definition at line 93 of file tracking_util.c.
References TracksMap::num_tracks.
| void tracks_map_insert | ( | TracksMap * | map, |
| MovieTrackingTrack * | track, | ||
| void * | customdata | ||
| ) |
Definition at line 110 of file tracking_util.c.
References BLI_ghash_insert(), TracksMap::customdata, TracksMap::customdata_size, TracksMap::hash, MovieTrackingTrack::markers, MEM_dupallocN, TracksMap::ptr, and TracksMap::tracks.
Referenced by BKE_tracking_reconstruction_context_new().
| void tracks_map_merge | ( | TracksMap * | map, |
| MovieTracking * | tracking | ||
| ) |
Definition at line 127 of file tracking_util.c.
References Freestyle::a, BKE_tracking_object_add(), BKE_tracking_object_get_named(), BKE_tracking_track_duplicate(), BLI_addtail(), BLI_findindex(), BLI_ghash_lookup(), BLI_ghash_reinsert(), BLI_remlink(), BLI_spin_lock(), BLI_spin_unlock(), BLI_uniquename(), BLT_I18NCONTEXT_ID_MOVIECLIP, CTX_DATA_, ListBase::first, MovieTrackingTrack::flag, TracksMap::hash, TracksMap::is_camera, MovieTrackingTrack::markers, MEM_dupallocN, MEM_freeN, MovieTrackingTrack::name, MovieTrackingTrack::next, next, NULL, TracksMap::num_tracks, TracksMap::object_name, MovieTrackingTrack::pat_flag, MovieTrackingTrack::prev, MovieTrackingTrack::search_flag, TracksMap::spin_lock, tracks, TracksMap::tracks, and MovieTracking::tracks.
Referenced by BKE_tracking_reconstruction_finish().
| TracksMap* tracks_map_new | ( | const char * | object_name, |
| bool | is_camera, | ||
| int | num_tracks, | ||
| int | customdata_size | ||
| ) |
Definition at line 67 of file tracking_util.c.
References BLI_ghash_ptr_new(), BLI_spin_init(), BLI_strncpy(), TracksMap::customdata, TracksMap::customdata_size, TracksMap::hash, TracksMap::is_camera, MEM_callocN, TracksMap::num_tracks, TracksMap::object_name, TracksMap::spin_lock, and TracksMap::tracks.
Referenced by BKE_tracking_reconstruction_context_new().
|
static |
Definition at line 259 of file tracking_util.c.
Referenced by marker_unified_to_frame_pixel_coordinates().