Blender  V3.3
Classes
clip_editor.c File Reference
#include <errno.h>
#include <fcntl.h>
#include <stddef.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_math.h"
#include "BLI_rect.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_mask.h"
#include "BKE_movieclip.h"
#include "BKE_tracking.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "ED_clip.h"
#include "ED_mask.h"
#include "ED_screen.h"
#include "ED_select_utils.h"
#include "WM_api.h"
#include "WM_types.h"
#include "UI_view2d.h"
#include "clip_intern.h"
#include "PIL_time.h"

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 (SpaceClip *sc, int *width, int *height)
 
void ED_space_clip_get_size_fl (SpaceClip *sc, float size[2])
 
void ED_space_clip_get_zoom (SpaceClip *sc, ARegion *region, float *zoomx, float *zoomy)
 
void ED_space_clip_get_aspect (SpaceClip *sc, float *aspx, float *aspy)
 
void ED_space_clip_get_aspect_dimension_aware (SpaceClip *sc, float *aspx, float *aspy)
 
int ED_space_clip_get_clip_frame_number (SpaceClip *sc)
 
ImBufED_space_clip_get_buffer (SpaceClip *sc)
 
ImBufED_space_clip_get_stable_buffer (SpaceClip *sc, float loc[2], float *scale, float *angle)
 
bool ED_space_clip_get_position (struct SpaceClip *sc, struct ARegion *region, int mval[2], float fpos[2])
 
bool ED_space_clip_color_sample (SpaceClip *sc, 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, ARegion *UNUSED(region), bool fit)
 
void ED_clip_select_all (SpaceClip *sc, int action, bool *r_has_selection)
 
void ED_clip_point_undistorted_pos (SpaceClip *sc, const float co[2], float r_co[2])
 
void ED_clip_point_stable_pos (SpaceClip *sc, ARegion *region, float x, float y, float *xr, float *yr)
 
void ED_clip_point_stable_pos__reverse (SpaceClip *sc, 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? More...
 
void ED_clip_mouse_pos (SpaceClip *sc, ARegion *region, const int mval[2], float co[2])
 
bool ED_space_clip_check_show_trackedit (SpaceClip *sc)
 
bool ED_space_clip_check_show_maskedit (SpaceClip *sc)
 
Clip Editing Functions
MovieClipED_space_clip_get_clip (SpaceClip *sc)
 
void ED_space_clip_set_clip (bContext *C, bScreen *screen, SpaceClip *sc, MovieClip *clip)
 
Masking Editing Functions
MaskED_space_clip_get_mask (SpaceClip *sc)
 
void ED_space_clip_set_mask (bContext *C, SpaceClip *sc, Mask *mask)
 

Pre-Fetching Functions

typedef struct PrefetchJob PrefetchJob
 
typedef struct PrefetchQueue PrefetchQueue
 
static bool check_prefetch_break (void)
 
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, short *stop, short *do_update, float *progress)
 
static bool prefetch_movie_frame (MovieClip *clip, MovieClip *clip_local, int frame, short render_size, short render_flag, short *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, short *stop, short *do_update, float *progress)
 
static void prefetch_startjob (void *pjv, short *stop, short *do_update, float *progress)
 
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)
 

Typedef Documentation

◆ PrefetchJob

typedef struct PrefetchJob PrefetchJob

◆ PrefetchQueue

typedef struct PrefetchQueue PrefetchQueue

Function Documentation

◆ check_prefetch_break()

static bool check_prefetch_break ( void  )
static

Definition at line 685 of file clip_editor.c.

References G.

Referenced by prefetch_movie_frame(), and prefetch_thread_next_frame().

◆ clip_start_prefetch_job()

void clip_start_prefetch_job ( const bContext C)

◆ 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,
short *  stop,
short *  do_update,
float progress 
)
static

Definition at line 957 of file clip_editor.c.

References float(), and prefetch_movie_frame().

Referenced by prefetch_startjob().

◆ ED_clip_mouse_pos()

void ED_clip_mouse_pos ( struct SpaceClip sc,
struct ARegion region,
const int  mval[2],
float  co[2] 
)

◆ ED_clip_point_stable_pos()

void ED_clip_point_stable_pos ( SpaceClip sc,
ARegion region,
float  x,
float  y,
float xr,
float yr 
)

◆ ED_clip_point_stable_pos__reverse()

void ED_clip_point_stable_pos__reverse ( SpaceClip sc,
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 517 of file clip_editor.c.

References ED_clip_point_undistorted_pos(), ED_space_clip_get_size(), ED_space_clip_get_zoom(), height, mul_v3_m4v3(), pos, SpaceClip::stabmat, sx, sy, UI_view2d_view_to_region(), ARegion::v2d, and width.

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

◆ ED_clip_point_undistorted_pos()

void ED_clip_point_undistorted_pos ( SpaceClip sc,
const float  co[2],
float  r_co[2] 
)

◆ ED_clip_select_all()

void ED_clip_select_all ( SpaceClip sc,
int  action,
bool r_has_selection 
)

◆ ED_clip_update_frame()

void ED_clip_update_frame ( const Main mainp,
int  cfra 
)

◆ ED_clip_view_lock_state_restore_no_jump()

void ED_clip_view_lock_state_restore_no_jump ( const bContext C,
const ClipViewLockState state 
)

◆ ED_clip_view_lock_state_store()

void ED_clip_view_lock_state_store ( const bContext C,
ClipViewLockState state 
)

◆ ED_clip_view_selection()

bool ED_clip_view_selection ( const bContext C,
ARegion UNUSEDregion,
bool  fit 
)

◆ ED_space_clip_check_show_maskedit()

bool ED_space_clip_check_show_maskedit ( SpaceClip sc)

Definition at line 555 of file clip_editor.c.

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 ( SpaceClip sc)

◆ ED_space_clip_color_sample()

bool ED_space_clip_color_sample ( struct SpaceClip sc,
struct ARegion region,
const int  mval[2],
float  r_col[3] 
)

◆ ED_space_clip_get_aspect()

void ED_space_clip_get_aspect ( SpaceClip sc,
float aspx,
float aspy 
)

◆ ED_space_clip_get_aspect_dimension_aware()

void ED_space_clip_get_aspect_dimension_aware ( SpaceClip sc,
float aspx,
float aspy 
)

◆ ED_space_clip_get_buffer()

ImBuf* ED_space_clip_get_buffer ( SpaceClip sc)

◆ ED_space_clip_get_clip()

MovieClip* ED_space_clip_get_clip ( SpaceClip sc)

Definition at line 570 of file clip_editor.c.

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(), 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(), 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(), 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_center_principal_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(), 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_marker_check_slide(), tracking_object_new_exec(), tracking_object_remove_exec(), tracking_plane_marker_check_slide(), update_image_from_plane_marker_exec(), update_image_from_plane_marker_poll(), and viewRedrawForce().

◆ ED_space_clip_get_clip_frame_number()

int ED_space_clip_get_clip_frame_number ( struct SpaceClip sc)

◆ ED_space_clip_get_mask()

Mask* ED_space_clip_get_mask ( SpaceClip sc)

Definition at line 631 of file clip_editor.c.

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

Referenced by special_aftertrans_update__mask().

◆ ED_space_clip_get_position()

bool ED_space_clip_get_position ( struct SpaceClip sc,
struct ARegion region,
int  mval[2],
float  fpos[2] 
)

◆ ED_space_clip_get_size()

void ED_space_clip_get_size ( SpaceClip sc,
int *  width,
int *  height 
)

◆ ED_space_clip_get_size_fl()

void ED_space_clip_get_size_fl ( SpaceClip sc,
float  size[2] 
)

Definition at line 156 of file clip_editor.c.

References ED_space_clip_get_size(), and size().

◆ ED_space_clip_get_stable_buffer()

ImBuf* ED_space_clip_get_stable_buffer ( SpaceClip sc,
float  loc[2],
float scale,
float angle 
)

◆ ED_space_clip_get_zoom()

void ED_space_clip_get_zoom ( SpaceClip sc,
ARegion region,
float zoomx,
float zoomy 
)

◆ ED_space_clip_maskedit_mask_poll()

bool ED_space_clip_maskedit_mask_poll ( bContext C)

◆ ED_space_clip_maskedit_mask_visible_splines_poll()

bool ED_space_clip_maskedit_mask_visible_splines_poll ( bContext C)

◆ ED_space_clip_maskedit_poll()

bool ED_space_clip_maskedit_poll ( bContext C)

◆ ED_space_clip_maskedit_visible_splines_poll()

bool ED_space_clip_maskedit_visible_splines_poll ( bContext C)

◆ ED_space_clip_poll()

bool ED_space_clip_poll ( bContext C)

◆ ED_space_clip_set_clip()

void ED_space_clip_set_clip ( bContext C,
bScreen screen,
SpaceClip sc,
MovieClip clip 
)

◆ ED_space_clip_set_mask()

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

◆ ED_space_clip_tracking_poll()

bool ED_space_clip_tracking_poll ( bContext C)

◆ ED_space_clip_view_clip_poll()

bool ED_space_clip_view_clip_poll ( bContext C)

◆ prefetch_check_early_out()

static bool prefetch_check_early_out ( const bContext C)
static

◆ 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 1045 of file clip_editor.c.

References C, CTX_data_scene(), Scene::r, scene, and RenderData::sfra.

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,
short *  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()

static void prefetch_startjob ( void pjv,
short *  stop,
short *  do_update,
float progress 
)
static

◆ prefetch_task_func()

static void prefetch_task_func ( TaskPool *__restrict  pool,
void task_data 
)
static

◆ 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,
short *  stop,
short *  do_update,
float progress 
)
static