|
Blender V4.3
|
#include <cstdlib>#include "MEM_guardedalloc.h"#include "DNA_movieclip_types.h"#include "DNA_object_types.h"#include "BLI_listbase.h"#include "BLI_math_vector.h"#include "BLI_task.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "BKE_movieclip.h"#include "BKE_tracking.h"#include "IMB_imbuf.hh"#include "IMB_imbuf_types.hh"#include "libmv-capi.h"#include "tracking_private.h"Go to the source code of this file.
Classes | |
| struct | AutoTrackClip |
| struct | AutoTrackTrack |
| struct | AutoTrackMarker |
| struct | AutoTrackTrackingResult |
| struct | AutoTrackContext |
| struct | AutoTrackTLS |
Functions | |
Marker coordinate system conversion. | |
| static void | normalized_to_libmv_frame (const float normalized[2], const int frame_dimensions[2], float result[2]) |
| static void | normalized_relative_to_libmv_frame (const float normalized[2], const float origin[2], const int frame_dimensions[2], float result[2]) |
| static void | libmv_frame_to_normalized (const float frame_coord[2], const int frame_dimensions[2], float result[2]) |
| static void | libmv_frame_to_normalized_relative (const float frame_coord[2], const float origin[2], const int frame_dimensions[2], float result[2]) |
Conversion of markers between Blender's DNA and Libmv. | |
| static libmv_Marker | dna_marker_to_libmv_marker (MovieTrackingTrack &track, const MovieTrackingMarker &marker, const int clip, const int track_index, const int frame_width, const int frame_height, const bool backwards) |
| static MovieTrackingMarker | libmv_marker_to_dna_marker (const libmv_Marker &libmv_marker, const int frame_width, const int frame_height) |
General helpers. | |
TODO(sergey): Should be moved to | |
| static bool | tracking_check_marker_margin (const libmv_Marker &libmv_marker, const int margin, const int frame_width, const int frame_height) |
Auto-Track Context Initialization | |
| static bool | autotrack_is_marker_usable (const MovieTrackingMarker &marker) |
| static bool | autotrack_is_track_trackable (const AutoTrackContext *context, const AutoTrackTrack *autotrack_track) |
| static void | autotrack_context_init_clips (AutoTrackContext *context, MovieClip *clip, MovieClipUser *user) |
| static void | autotrack_context_init_tracks_for_clip (AutoTrackContext *context, int clip_index) |
| static void | autotrack_context_init_tracks (AutoTrackContext *context) |
| static void | autotrack_context_init_image_accessor (AutoTrackContext *context) |
| static size_t | autotrack_count_all_usable_markers (AutoTrackContext *context) |
| static int | autotrack_count_trackable_markers (AutoTrackContext *context) |
| static void | autotrack_context_init_autotrack (AutoTrackContext *context) |
| static void | autotrack_context_init_markers (AutoTrackContext *context) |
| AutoTrackContext * | BKE_autotrack_context_new (MovieClip *clip, MovieClipUser *user, const bool is_backwards) |
Context tracking start. | |
Called from possible job once before performing tracking steps. | |
| static void | reference_keyframed_image_buffers (AutoTrackContext *context) |
| void | BKE_autotrack_context_start (AutoTrackContext *context) |
Threaded context step (tracking process). | |
| static void | autotrack_context_step_cb (void *__restrict userdata, const int marker_index, const TaskParallelTLS *__restrict tls) |
| static void | autotrack_context_reduce (const void *__restrict, void *__restrict chunk_join, void *__restrict chunk) |
| bool | BKE_autotrack_context_step (AutoTrackContext *context) |
Context data synchronization. | |
Used to copy tracking result to Blender side, while the tracking is still happening in its thread. | |
| void | BKE_autotrack_context_sync (AutoTrackContext *context) |
| void | BKE_autotrack_context_sync_user (AutoTrackContext *context, MovieClipUser *user) |
Finalization. | |
| void | BKE_autotrack_context_finish (AutoTrackContext *context) |
| static void | release_keyframed_image_buffers (AutoTrackContext *context) |
| void | BKE_autotrack_context_free (AutoTrackContext *context) |
|
static |
Definition at line 459 of file tracking_auto.cc.
References autotrack_count_all_usable_markers(), autotrack_is_marker_usable(), AutoTrackTrack::clip_index, dna_marker_to_libmv_marker(), AutoTrackClip::height, libmv_autoTrackNew(), libmv_autoTrackSetMarkers(), MovieTrackingTrack::markers, MovieTrackingTrack::markersnr, MEM_freeN(), AutoTrackTrack::track, and AutoTrackClip::width.
Referenced by BKE_autotrack_context_new().
|
static |
Definition at line 341 of file tracking_auto.cc.
References BKE_movieclip_get_size().
Referenced by BKE_autotrack_context_new().
|
static |
Definition at line 400 of file tracking_auto.cc.
References BLI_assert, MAX_ACCESSOR_CLIP, MEM_freeN(), and tracking_image_accessor_new().
Referenced by BKE_autotrack_context_new().
|
static |
Definition at line 502 of file tracking_auto.cc.
References autotrack_count_trackable_markers(), BKE_movieclip_remap_scene_to_clip_frame(), BKE_tracking_marker_get(), AutoTrackClip::clip, AutoTrackTrack::clip_index, dna_marker_to_libmv_marker(), AutoTrackClip::height, AutoTrackTrack::is_trackable, AutoTrackMarker::libmv_marker, and AutoTrackClip::width.
Referenced by BKE_autotrack_context_new().
|
static |
Definition at line 390 of file tracking_auto.cc.
References autotrack_context_init_tracks_for_clip(), and BLI_assert.
Referenced by BKE_autotrack_context_new().
|
static |
Definition at line 358 of file tracking_auto.cc.
References autotrack_is_track_trackable(), BKE_tracking_object_get_active(), BLI_assert, BLI_listbase_count(), AutoTrackClip::clip, AutoTrackTrack::clip_index, AutoTrackTrack::is_trackable, LISTBASE_FOREACH, MEM_reallocN, AutoTrackTrack::track, AutoTrackTrack::track_region_options, tracking_configure_tracker(), and MovieTrackingObject::tracks.
Referenced by autotrack_context_init_tracks().
|
static |
Definition at line 692 of file tracking_auto.cc.
References BLI_listbase_is_empty(), BLI_movelisttolist(), and AutoTrackTLS::results.
Referenced by BKE_autotrack_context_step().
|
static |
Definition at line 627 of file tracking_auto.cc.
References BLI_addtail(), BLI_assert, libmv_Marker::clip, libmv_Marker::frame, AutoTrackClip::height, libmv_autoTrackGetMarker(), libmv_autoTrackMarker(), AutoTrackMarker::libmv_marker, AutoTrackTrackingResult::libmv_marker, AutoTrackTrackingResult::libmv_result, MovieTrackingTrack::margin, MovieTrackingTrack::pattern_match, libmv_Marker::reference_frame, AutoTrackTLS::results, AutoTrackTrackingResult::success, AutoTrackTrack::track, libmv_Marker::track, TRACK_MATCH_KEYFRAME, TRACK_MATCH_PREVIOUS_FRAME, AutoTrackTrack::track_region_options, tracking_check_marker_margin(), and AutoTrackClip::width.
Referenced by BKE_autotrack_context_step().
|
static |
Definition at line 426 of file tracking_auto.cc.
References autotrack_is_marker_usable(), MovieTrackingTrack::markers, and MovieTrackingTrack::markersnr.
Referenced by autotrack_context_init_autotrack().
|
static |
Definition at line 442 of file tracking_auto.cc.
References AutoTrackTrack::is_trackable.
Referenced by autotrack_context_init_markers().
|
static |
Definition at line 317 of file tracking_auto.cc.
References MovieTrackingMarker::flag, and MARKER_DISABLED.
Referenced by autotrack_context_init_autotrack(), autotrack_count_all_usable_markers(), and autotrack_is_track_trackable().
|
static |
Definition at line 325 of file tracking_auto.cc.
References autotrack_is_marker_usable(), BKE_movieclip_remap_scene_to_clip_frame(), BKE_tracking_marker_get(), AutoTrackClip::clip, AutoTrackTrack::clip_index, MovieTrackingTrack::flag, AutoTrackTrack::track, TRACK_HIDDEN, TRACK_LOCKED, and TRACK_SELECTED.
Referenced by autotrack_context_init_tracks_for_clip().
| void BKE_autotrack_context_finish | ( | AutoTrackContext * | context | ) |
Definition at line 836 of file tracking_auto.cc.
References BKE_movieclip_remap_scene_to_clip_frame(), BKE_tracking_object_get_active(), BKE_tracking_plane_track_has_point_track(), BKE_tracking_track_plane_from_existing_motion(), AutoTrackClip::clip, AutoTrackTrack::is_trackable, LISTBASE_FOREACH, PLANE_TRACK_AUTOKEY, MovieTrackingObject::plane_tracks, and AutoTrackTrack::track.
Referenced by track_markers_endjob().
| void BKE_autotrack_context_free | ( | AutoTrackContext * | context | ) |
Definition at line 878 of file tracking_auto.cc.
References BLI_freelistN(), BLI_spin_end(), libmv_autoTrackDestroy(), MEM_freeN(), MEM_SAFE_FREE, release_keyframed_image_buffers(), and tracking_image_accessor_destroy().
Referenced by track_markers_freejob().
| AutoTrackContext * BKE_autotrack_context_new | ( | MovieClip * | clip, |
| MovieClipUser * | user, | ||
| const bool | is_backwards ) |
Definition at line 541 of file tracking_auto.cc.
References autotrack_context_init_autotrack(), autotrack_context_init_clips(), autotrack_context_init_image_accessor(), autotrack_context_init_markers(), autotrack_context_init_tracks(), BLI_spin_init(), and MovieClipUser::framenr.
Referenced by track_markers_initjob().
| void BKE_autotrack_context_start | ( | AutoTrackContext * | context | ) |
Definition at line 610 of file tracking_auto.cc.
References reference_keyframed_image_buffers().
Referenced by track_markers_startjob().
| bool BKE_autotrack_context_step | ( | AutoTrackContext * | context | ) |
Definition at line 706 of file tracking_auto.cc.
References autotrack_context_reduce(), autotrack_context_step_cb(), BLI_listbase_clear(), BLI_movelisttolist(), BLI_parallel_range_settings_defaults(), BLI_spin_lock(), BLI_spin_unlock(), BLI_task_parallel_range(), libmv_autoTrackAddMarker(), LISTBASE_FOREACH, and AutoTrackTLS::results.
Referenced by track_markers_startjob().
| void BKE_autotrack_context_sync | ( | AutoTrackContext * | context | ) |
Definition at line 759 of file tracking_auto.cc.
References BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_remap_scene_to_clip_frame(), BKE_tracking_dopesheet_tag_update(), BKE_tracking_marker_get_exact(), BKE_tracking_marker_insert(), BLI_assert, BLI_listbase_clear(), BLI_spin_lock(), BLI_spin_unlock(), AutoTrackClip::clip, libmv_Marker::clip, MovieTrackingMarker::flag, MovieTrackingMarker::framenr, AutoTrackClip::height, libmv_marker_to_dna_marker(), LISTBASE_FOREACH_MUTABLE, MARKER_DISABLED, max_ii(), MEM_freeN(), min_ii(), AutoTrackTrack::track, libmv_Marker::track, tracking_marker_insert_disabled(), and AutoTrackClip::width.
Referenced by track_markers_endjob(), and track_markers_updatejob().
| void BKE_autotrack_context_sync_user | ( | AutoTrackContext * | context, |
| MovieClipUser * | user ) |
Definition at line 822 of file tracking_auto.cc.
References MovieClipUser::framenr.
Referenced by clip_main_region_draw().
|
static |
Definition at line 179 of file tracking_auto.cc.
References libmv_Marker::clip, MovieTrackingMarker::flag, MovieTrackingTrack::flag, MovieTrackingMarker::framenr, LIBMV_MARKER_CHANNEL_B, LIBMV_MARKER_CHANNEL_G, LIBMV_MARKER_CHANNEL_R, LIBMV_MARKER_MODEL_TYPE_POINT, LIBMV_MARKER_SOURCE_MANUAL, LIBMV_MARKER_SOURCE_TRACKED, LIBMV_MARKER_STATUS_UNKNOWN, MARKER_TRACKED, normalized_relative_to_libmv_frame(), normalized_to_libmv_frame(), MovieTrackingMarker::pattern_corners, MovieTrackingTrack::pattern_match, MovieTrackingMarker::pos, MovieTrackingMarker::search_max, MovieTrackingMarker::search_min, TRACK_DISABLE_BLUE, TRACK_DISABLE_GREEN, TRACK_DISABLE_RED, TRACK_MATCH_KEYFRAME, and tracking_get_keyframed_marker().
Referenced by autotrack_context_init_autotrack(), and autotrack_context_init_markers().
|
static |
Definition at line 156 of file tracking_auto.cc.
Referenced by libmv_marker_to_dna_marker().
|
static |
Definition at line 164 of file tracking_auto.cc.
Referenced by libmv_marker_to_dna_marker().
|
static |
Definition at line 241 of file tracking_auto.cc.
References libmv_Marker::center, libmv_Marker::frame, MovieTrackingMarker::framenr, libmv_frame_to_normalized(), libmv_frame_to_normalized_relative(), LIBMV_MARKER_SOURCE_TRACKED, MARKER_TRACKED, libmv_Marker::patch, libmv_Marker::search_region_max, libmv_Marker::search_region_min, and libmv_Marker::source.
Referenced by BKE_autotrack_context_sync().
|
static |
Definition at line 147 of file tracking_auto.cc.
References normalized().
Referenced by dna_marker_to_libmv_marker().
|
static |
Definition at line 139 of file tracking_auto.cc.
References normalized().
Referenced by dna_marker_to_libmv_marker().
|
static |
Definition at line 570 of file tracking_auto.cc.
References BKE_movieclip_get_ibuf(), BKE_movieclip_remap_clip_to_scene_frame(), BKE_movieclip_user_set_frame(), AutoTrackClip::clip, libmv_Marker::clip, IB_PERSISTENT, AutoTrackMarker::libmv_marker, MCLIP_PROXY_RENDER_SIZE_FULL, MovieTrackingTrack::pattern_match, libmv_Marker::reference_frame, MovieClipUser::render_flag, MovieClipUser::render_size, AutoTrackTrack::track, libmv_Marker::track, TRACK_MATCH_KEYFRAME, and ImBuf::userflags.
Referenced by BKE_autotrack_context_start().
|
static |
Definition at line 864 of file tracking_auto.cc.
References IMB_freeImBuf(), MEM_freeN(), and ImBuf::userflags.
Referenced by BKE_autotrack_context_free().
|
static |
Definition at line 282 of file tracking_auto.cc.
References libmv_Marker::center, INIT_MINMAX2, max_ff(), minmax_v2v2_v2(), and libmv_Marker::patch.
Referenced by autotrack_context_step_cb().