Blender V4.3
clip_editor.cc File Reference
#include <cerrno>
#include <cstddef>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include "MEM_guardedalloc.h"
#include "DNA_defaults.h"
#include "DNA_mask_types.h"
#include "BLI_fileops.h"
#include "BLI_listbase.h"
#include "BLI_rect.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_movieclip.h"
#include "BKE_tracking.h"
#include "IMB_colormanagement.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "ED_clip.hh"
#include "ED_select_utils.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "UI_view2d.hh"
#include "clip_intern.hh"

Go to the source code of this file.

Classes

struct  PrefetchJob
 
struct  PrefetchQueue
 

Functions

Operator Poll Functions
bool ED_space_clip_poll (bContext *C)
 
bool ED_space_clip_view_clip_poll (bContext *C)
 
bool ED_space_clip_tracking_poll (bContext *C)
 
bool ED_space_clip_maskedit_poll (bContext *C)
 
bool ED_space_clip_maskedit_visible_splines_poll (bContext *C)
 
bool ED_space_clip_maskedit_mask_poll (bContext *C)
 
bool ED_space_clip_maskedit_mask_visible_splines_poll (bContext *C)
 
Common Editing Functions
void ED_space_clip_get_size (const SpaceClip *sc, int *r_width, int *r_height)
 
void ED_space_clip_get_size_fl (const SpaceClip *sc, float r_size[2])
 
void ED_space_clip_get_zoom (const SpaceClip *sc, const ARegion *region, float *r_zoomx, float *r_zoomy)
 
void ED_space_clip_get_aspect (const SpaceClip *sc, float *r_aspx, float *r_aspy)
 
void ED_space_clip_get_aspect_dimension_aware (const SpaceClip *sc, float *r_aspx, float *r_aspy)
 
int ED_space_clip_get_clip_frame_number (const SpaceClip *sc)
 
ImBufED_space_clip_get_buffer (const SpaceClip *sc)
 
ImBufED_space_clip_get_stable_buffer (const SpaceClip *sc, float loc[2], float *scale, float *angle)
 
bool ED_space_clip_get_position (const SpaceClip *sc, const ARegion *region, const int mval[2], float r_fpos[2])
 
bool ED_space_clip_color_sample (const SpaceClip *sc, const ARegion *region, const int mval[2], float r_col[3])
 
void ED_clip_update_frame (const Main *mainp, int cfra)
 
bool ED_clip_view_selection (const bContext *C, const ARegion *, bool fit)
 
void ED_clip_select_all (const SpaceClip *sc, int action, bool *r_has_selection)
 
void ED_clip_point_undistorted_pos (const SpaceClip *sc, const float co[2], float r_co[2])
 
void ED_clip_point_stable_pos (const SpaceClip *sc, const ARegion *region, float x, float y, float *xr, float *yr)
 
void ED_clip_point_stable_pos__reverse (const SpaceClip *sc, const ARegion *region, const float co[2], float r_co[2])
 the reverse of ED_clip_point_stable_pos(), gets the marker region coords. better name here? view_to_track / track_to_view or so?
 
void ED_clip_mouse_pos (const SpaceClip *sc, const ARegion *region, const int mval[2], float r_co[2])
 
bool ED_space_clip_check_show_trackedit (const SpaceClip *sc)
 
bool ED_space_clip_check_show_maskedit (const SpaceClip *sc)
 
Clip Editing Functions
MovieClipED_space_clip_get_clip (const SpaceClip *sc)
 
void ED_space_clip_set_clip (bContext *C, bScreen *screen, SpaceClip *sc, MovieClip *clip)
 
Masking Editing Functions
MaskED_space_clip_get_mask (const SpaceClip *sc)
 
void ED_space_clip_set_mask (bContext *C, SpaceClip *sc, Mask *mask)
 
Pre-Fetching Functions
static bool check_prefetch_break ()
 
static ucharprefetch_read_file_to_memory (MovieClip *clip, int current_frame, short render_size, short render_flag, size_t *r_size)
 
static int prefetch_find_uncached_frame (MovieClip *clip, int from_frame, int end_frame, short render_size, short render_flag, short direction)
 
static ucharprefetch_thread_next_frame (PrefetchQueue *queue, MovieClip *clip, size_t *r_size, int *r_current_frame)
 
static void prefetch_task_func (TaskPool *__restrict pool, void *task_data)
 
static void start_prefetch_threads (MovieClip *clip, int start_frame, int current_frame, int end_frame, short render_size, short render_flag, bool *stop, bool *do_update, float *progress)
 
static bool prefetch_movie_frame (MovieClip *clip, MovieClip *clip_local, int frame, short render_size, short render_flag, bool *stop)
 
static void do_prefetch_movie (MovieClip *clip, MovieClip *clip_local, int start_frame, int current_frame, int end_frame, short render_size, short render_flag, bool *stop, bool *do_update, float *progress)
 
static void prefetch_startjob (void *pjv, wmJobWorkerStatus *worker_status)
 
static void prefetch_freejob (void *pjv)
 
static int prefetch_get_start_frame (const bContext *C)
 
static int prefetch_get_final_frame (const bContext *C)
 
static bool prefetch_check_early_out (const bContext *C)
 
void clip_start_prefetch_job (const bContext *C)
 
void ED_clip_view_lock_state_store (const bContext *C, ClipViewLockState *state)
 
void ED_clip_view_lock_state_restore_no_jump (const bContext *C, const ClipViewLockState *state)
 

Function Documentation

◆ check_prefetch_break()

static bool check_prefetch_break ( )
static

Definition at line 692 of file clip_editor.cc.

References G.

Referenced by prefetch_movie_frame(), and prefetch_thread_next_frame().

◆ clip_start_prefetch_job()

◆ do_prefetch_movie()

static void do_prefetch_movie ( MovieClip * clip,
MovieClip * clip_local,
int start_frame,
int current_frame,
int end_frame,
short render_size,
short render_flag,
bool * stop,
bool * do_update,
float * progress )
static

Definition at line 965 of file clip_editor.cc.

References float, and prefetch_movie_frame().

Referenced by prefetch_startjob().

◆ ED_clip_mouse_pos()

◆ ED_clip_point_stable_pos()

◆ ED_clip_point_stable_pos__reverse()

void ED_clip_point_stable_pos__reverse ( const SpaceClip * sc,
const ARegion * region,
const float co[2],
float r_co[2] )

the reverse of ED_clip_point_stable_pos(), gets the marker region coords. better name here? view_to_track / track_to_view or so?

Definition at line 524 of file clip_editor.cc.

References ED_clip_point_undistorted_pos(), ED_space_clip_get_size(), ED_space_clip_get_zoom(), mul_v3_m4v3(), pos, SpaceClip::stabmat, and UI_view2d_view_to_region().

Referenced by do_lasso_select_marker(), ED_mask_point_pos__reverse(), and projectIntViewEx().

◆ ED_clip_point_undistorted_pos()

◆ ED_clip_select_all()

◆ ED_clip_update_frame()

void ED_clip_update_frame ( const Main * mainp,
int cfra )

◆ ED_clip_view_lock_state_restore_no_jump()

◆ ED_clip_view_lock_state_store()

◆ ED_clip_view_selection()

bool ED_clip_view_selection ( const bContext * C,
const ARegion * region,
bool fit )

◆ ED_space_clip_check_show_maskedit()

bool ED_space_clip_check_show_maskedit ( const SpaceClip * sc)

Definition at line 565 of file clip_editor.cc.

References SpaceClip::mode, and SC_MODE_MASKEDIT.

Referenced by ED_space_clip_maskedit_poll(), initTransInfo(), and viewRedrawForce().

◆ ED_space_clip_check_show_trackedit()

bool ED_space_clip_check_show_trackedit ( const SpaceClip * sc)

◆ ED_space_clip_color_sample()

◆ ED_space_clip_get_aspect()

◆ ED_space_clip_get_aspect_dimension_aware()

void ED_space_clip_get_aspect_dimension_aware ( const SpaceClip * sc,
float * r_aspx,
float * r_aspy )

◆ ED_space_clip_get_buffer()

◆ ED_space_clip_get_clip()

MovieClip * ED_space_clip_get_clip ( const SpaceClip * sc)

Definition at line 580 of file clip_editor.cc.

References SpaceClip::clip.

Referenced by add_marker(), add_marker_at_click_modal(), add_marker_exec(), annotation_session_initdata(), apply_mouse_slide(), apply_solution_scale_invoke(), apply_solution_scale_poll(), average_tracks_exec(), average_tracks_invoke(), box_select_exec(), box_select_graph_exec(), circle_select_exec(), clean_tracks_exec(), clean_tracks_invoke(), clear_solution_exec(), clear_track_path_exec(), clip_channels_region_draw(), clip_draw_cache_and_notes(), clip_draw_dopesheet_channels(), clip_draw_dopesheet_main(), clip_draw_graph(), clip_draw_grease_pencil(), clip_draw_main(), clip_graph_tracking_iterate(), clip_graph_tracking_values_iterate(), clip_graph_tracking_values_iterate_track_reprojection_error_values(), clip_graph_tracking_values_iterate_track_speed_values(), clip_main_region_draw(), clip_rebuild_proxy_exec(), clip_start_prefetch_job(), copy_tracks_exec(), count_selected_bundles(), create_plane_track_tracks_exec(), createTransTrackingCurves(), createTransTrackingCurvesData(), createTransTrackingData(), createTransTrackingTracksData(), delete_curve_exec(), delete_knot_exec(), delete_marker_exec(), delete_track_exec(), detect_features_exec(), disable_markers_exec(), do_lasso_select_marker(), do_set_scale(), dopesheet_region_draw(), dopesheet_select_channel_exec(), dopesheet_view_all_exec(), draw_frame_curves(), draw_movieclip_buffer(), draw_movieclip_notes(), draw_stabilization_border(), draw_tracks_motion_and_error_curves(), ED_annotation_data_get_pointers_direct(), ED_clip_point_stable_pos(), ED_clip_point_undistorted_pos(), ED_clip_select_all(), ED_space_clip_get_aspect(), ED_space_clip_get_clip_frame_number(), ed_tracking_pick_plane_track(), ed_tracking_pick_point_track(), frame_jump_exec(), get_orientation_object(), graph_disable_markers_exec(), graph_select_all_markers_exec(), hide_tracks_clear_exec(), hide_tracks_exec(), join_tracks_exec(), keyframe_set_flag(), lock_tracks_exec(), mask_parent_set_exec(), mouse_select_curve(), mouse_select_knot(), new_image_from_plane_marker_exec(), new_image_from_plane_marker_poll(), open_invoke(), paste_tracks_exec(), prefetch_check_early_out(), prefetch_get_final_frame(), projectIntViewEx(), recalcData_tracking(), recalcData_tracking_curves(), refine_marker_exec(), sample_plane_marker_image_for_operator(), screen_ctx_selected_movieclip_tracks(), select_all_exec(), select_exec(), select_grouped_exec(), selected_boundbox(), selected_tracking_boundbox(), set_axis_exec(), set_orientation_poll(), set_origin_exec(), set_plane_exec(), set_scale_invoke(), set_solution_scale_invoke(), set_solution_scale_poll(), set_solver_keyframe_exec(), slide_marker_invoke(), slide_plane_marker_invoke(), slide_plane_marker_modal(), solve_camera_initjob(), solve_camera_invoke(), special_aftertrans_update__movieclip(), special_aftertrans_update__movieclip_for_curves(), stabilize_2d_add_exec(), stabilize_2d_poll(), stabilize_2d_remove_exec(), stabilize_2d_rotation_add_exec(), stabilize_2d_rotation_remove_exec(), stabilize_2d_rotation_select_exec(), stabilize_2d_select_exec(), track_copy_color_exec(), track_markers(), track_markers_initjob(), tracking_has_selection(), tracking_object_new_exec(), tracking_object_remove_exec(), update_image_from_plane_marker_exec(), update_image_from_plane_marker_poll(), and viewRedrawForce().

◆ ED_space_clip_get_clip_frame_number()

◆ ED_space_clip_get_mask()

Mask * ED_space_clip_get_mask ( const SpaceClip * sc)

Definition at line 638 of file clip_editor.cc.

References MaskSpaceInfo::mask, and SpaceClip::mask_info.

Referenced by special_aftertrans_update__mask().

◆ ED_space_clip_get_position()

bool ED_space_clip_get_position ( const SpaceClip * sc,
const ARegion * region,
const int mval[2],
float r_fpos[2] )

◆ ED_space_clip_get_size()

◆ ED_space_clip_get_size_fl()

void ED_space_clip_get_size_fl ( const SpaceClip * sc,
float r_size[2] )

Definition at line 151 of file clip_editor.cc.

References ED_space_clip_get_size().

◆ ED_space_clip_get_stable_buffer()

◆ ED_space_clip_get_zoom()

◆ ED_space_clip_maskedit_mask_poll()

bool ED_space_clip_maskedit_mask_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • It is set to Mask mode.
  • The space has mask opened.

Definition at line 110 of file clip_editor.cc.

References CTX_data_edit_movieclip(), CTX_wm_space_clip(), ED_space_clip_maskedit_poll(), MaskSpaceInfo::mask, and SpaceClip::mask_info.

Referenced by ED_maskedit_mask_poll(), ED_space_clip_maskedit_mask_visible_splines_poll(), and MASK_OT_parent_set().

◆ ED_space_clip_maskedit_mask_visible_splines_poll()

bool ED_space_clip_maskedit_mask_visible_splines_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • It is set to Mask mode.
  • The space has mask opened.
  • Mask has visible and editable splines.

Definition at line 125 of file clip_editor.cc.

References CTX_wm_space_clip(), MaskSpaceInfo::draw_flag, ED_space_clip_maskedit_mask_poll(), MASK_DRAWFLAG_SPLINE, and SpaceClip::mask_info.

Referenced by ED_maskedit_mask_visible_splines_poll().

◆ ED_space_clip_maskedit_poll()

bool ED_space_clip_maskedit_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • It is set to Mask mode.

It is not required to have mask opened for editing.

Definition at line 89 of file clip_editor.cc.

References SpaceClip::clip, CTX_wm_space_clip(), and ED_space_clip_check_show_maskedit().

Referenced by CLIP_OT_view_center_cursor(), ED_maskedit_poll(), ED_space_clip_maskedit_mask_poll(), and ED_space_clip_maskedit_visible_splines_poll().

◆ ED_space_clip_maskedit_visible_splines_poll()

bool ED_space_clip_maskedit_visible_splines_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • It is set to Mask mode.
  • Mask has visible and editable splines.

It is not required to have mask opened for editing.

Definition at line 100 of file clip_editor.cc.

References CTX_wm_space_clip(), MaskSpaceInfo::draw_flag, ED_space_clip_maskedit_poll(), MASK_DRAWFLAG_SPLINE, and SpaceClip::mask_info.

Referenced by ED_maskedit_visible_splines_poll().

◆ ED_space_clip_poll()

bool ED_space_clip_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • There is a movie clip opened in it.

Definition at line 56 of file clip_editor.cc.

References SpaceClip::clip, and CTX_wm_space_clip().

Referenced by CLIP_OT_cursor_set(), CLIP_OT_lock_selection_toggle(), CLIP_OT_mode_set(), CLIP_OT_rebuild_proxy(), and metadata_panel_context_poll().

◆ ED_space_clip_set_clip()

◆ ED_space_clip_set_mask()

void ED_space_clip_set_mask ( bContext * C,
SpaceClip * sc,
Mask * mask )

◆ ED_space_clip_tracking_poll()

◆ ED_space_clip_view_clip_poll()

bool ED_space_clip_view_clip_poll ( bContext * C)

Returns true when the following conditions are met:

  • Current space is Space Clip.
  • It is set to Clip view.

It is not required to have movie clip opened for editing.

Definition at line 67 of file clip_editor.cc.

References CTX_wm_space_clip(), SC_VIEW_CLIP, and SpaceClip::view.

Referenced by CLIP_OT_prefetch(), CLIP_OT_set_scene_frames(), CLIP_OT_view_all(), CLIP_OT_view_pan(), CLIP_OT_view_selected(), CLIP_OT_view_zoom(), CLIP_OT_view_zoom_in(), CLIP_OT_view_zoom_out(), and CLIP_OT_view_zoom_ratio().

◆ prefetch_check_early_out()

◆ prefetch_find_uncached_frame()

static int prefetch_find_uncached_frame ( MovieClip * clip,
int from_frame,
int end_frame,
short render_size,
short render_flag,
short direction )
static

◆ prefetch_freejob()

static void prefetch_freejob ( void * pjv)
static

◆ prefetch_get_final_frame()

static int prefetch_get_final_frame ( const bContext * C)
static

◆ prefetch_get_start_frame()

static int prefetch_get_start_frame ( const bContext * C)
static

Definition at line 1053 of file clip_editor.cc.

References CTX_data_scene().

Referenced by clip_start_prefetch_job(), and prefetch_check_early_out().

◆ prefetch_movie_frame()

static bool prefetch_movie_frame ( MovieClip * clip,
MovieClip * clip_local,
int frame,
short render_size,
short render_flag,
bool * stop )
static

◆ prefetch_read_file_to_memory()

static uchar * prefetch_read_file_to_memory ( MovieClip * clip,
int current_frame,
short render_size,
short render_flag,
size_t * r_size )
static

◆ prefetch_startjob()

◆ prefetch_task_func()

◆ prefetch_thread_next_frame()

static uchar * prefetch_thread_next_frame ( PrefetchQueue * queue,
MovieClip * clip,
size_t * r_size,
int * r_current_frame )
static

◆ start_prefetch_threads()

static void start_prefetch_threads ( MovieClip * clip,
int start_frame,
int current_frame,
int end_frame,
short render_size,
short render_flag,
bool * stop,
bool * do_update,
float * progress )
static