11 #include <sys/types.h>
184 *aspx = *aspy = 1.0f;
188 *aspy = *aspy / *aspx;
192 *aspx = *aspx / *aspy;
222 *aspy = *aspy / *aspx;
226 *aspx = *aspx / *aspy;
312 if (fx >= 0.0f && fy >= 0.0f && fx < 1.0f && fy < 1.0f) {
315 int x = (int)(fx * ibuf->
x),
y = (int)(fy * ibuf->
y);
325 else if (ibuf->
rect) {
360 float offset_x, offset_y;
384 bool has_selection =
false;
389 for (track = tracksbase->
first; track; track = track->
next) {
400 for (plane_track = plane_tracks_base->
first; plane_track; plane_track = plane_track->
next) {
408 for (track = tracksbase->
first; track; track = track->
next) {
434 has_selection =
true;
438 for (plane_track = plane_tracks_base->
first; plane_track; plane_track = plane_track->
next) {
452 has_selection =
true;
457 if (r_has_selection) {
458 *r_has_selection = has_selection;
487 float zoomx, zoomy,
pos[3], imat[4][4];
494 pos[0] = (
x -
sx) / zoomx;
495 pos[1] = (
y -
sy) / zoomy;
512 *xr = tmp[0] /
width;
513 *yr = tmp[1] / (
height * aspy);
537 r_co[0] = (
pos[0] *
width * zoomx) + (
float)
sx;
578 bool old_clip_visible =
false;
594 for (sl =
area->spacedata.first; sl; sl = sl->
next) {
600 if (cur_sc->
clip == old_clip) {
601 old_clip_visible =
true;
616 if (old_clip && old_clip != clip && !old_clip_visible) {
692 MovieClip *clip,
int current_frame,
short render_size,
short render_flag,
size_t *r_size)
747 for (current_frame = from_frame; current_frame <= end_frame; current_frame++) {
756 for (current_frame = from_frame; current_frame >= end_frame; current_frame--) {
765 return current_frame;
772 int *r_current_frame)
781 if (
queue->forward) {
783 queue->current_frame + 1,
789 if (current_frame >
queue->end_frame) {
791 queue->forward =
false;
795 if (!
queue->forward) {
797 queue->current_frame - 1,
805 int frames_processed;
808 clip, current_frame,
queue->render_size,
queue->render_flag, r_size);
810 *r_current_frame = current_frame;
812 queue->current_frame = current_frame;
814 if (
queue->forward) {
815 frames_processed =
queue->current_frame -
queue->initial_frame;
818 frames_processed = (
queue->end_frame -
queue->initial_frame) +
819 (
queue->initial_frame -
queue->current_frame);
822 *
queue->do_update = 1;
844 char *colorspace_name =
NULL;
893 queue.current_frame = current_frame;
894 queue.initial_frame = current_frame;
895 queue.start_frame = start_frame;
896 queue.end_frame = end_frame;
897 queue.render_size = render_size;
898 queue.render_flag = render_flag;
902 queue.do_update = do_update;
903 queue.progress = progress;
906 for (
int i = 0; i < tot_thread; i++) {
969 int frames_processed = 0;
972 for (frame = current_frame; frame <= end_frame; frame++) {
980 *progress = (
float)frames_processed / (end_frame - start_frame);
984 for (frame = current_frame; frame >= start_frame; frame--) {
992 *progress = (
float)frames_processed / (end_frame - start_frame);
1026 BLI_assert_msg(0,
"Unknown movie clip source when prefetching frames");
1035 if (clip_local !=
NULL) {
1074 int first_uncached_frame, end_frame;
1089 if (first_uncached_frame > end_frame || first_uncached_frame == clip_len) {
1095 if (first_uncached_frame < start_frame) {
1154 state->lock_offset_x = 0.0f;
1155 state->lock_offset_y = 0.0f;
1179 float offset_x, offset_y;
typedef float(TangentPoint)[2]
struct Scene * CTX_data_scene(const bContext *C)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct MovieClip * CTX_data_edit_movieclip(const bContext *C)
struct bScreen * CTX_wm_screen(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
void BKE_libblock_free_data(struct ID *id, bool do_id_user) ATTR_NONNULL()
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
void id_us_ensure_real(struct ID *id)
void BKE_libblock_free_datablock(struct ID *id, int flag) ATTR_NONNULL()
bool BKE_movieclip_put_frame_if_possible(struct MovieClip *clip, struct MovieClipUser *user, struct ImBuf *ibuf)
void BKE_movieclip_get_aspect(struct MovieClip *clip, float *aspx, float *aspy)
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
int BKE_movieclip_get_duration(struct MovieClip *clip)
void BKE_movieclip_clear_cache(struct MovieClip *clip)
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height)
void BKE_movieclip_filename_for_frame(struct MovieClip *clip, struct MovieClipUser *user, char *name)
struct ImBuf * BKE_movieclip_anim_ibuf_for_frame_no_lock(struct MovieClip *clip, struct MovieClipUser *user)
struct ImBuf * BKE_movieclip_get_stable_ibuf(struct MovieClip *clip, struct MovieClipUser *user, float loc[2], float *scale, float *angle, int postprocess_flag)
void BKE_movieclip_convert_multilayer_ibuf(struct ImBuf *ibuf)
struct ImBuf * BKE_movieclip_get_postprocessed_ibuf(struct MovieClip *clip, struct MovieClipUser *user, int postprocess_flag)
bool BKE_movieclip_has_cached_frame(struct MovieClip *clip, struct MovieClipUser *user)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
#define PLANE_TRACK_VIEW_SELECTED(plane_track)
#define MARKER_VISIBLE(sc, track, marker)
struct ListBase * BKE_tracking_get_active_plane_tracks(struct MovieTracking *tracking)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define TRACK_VIEW_SELECTED(sc, track)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
#define BLI_assert_msg(a, msg)
File and directory operations.
size_t BLI_file_descriptor_size(int file) ATTR_WARN_UNUSED_RESULT
int BLI_open(const char *filepath, int oflag, int pmode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
void rgb_uchar_to_float(float r_col[3], const unsigned char col_ub[3])
bool invert_m4_m4(float R[4][4], const float A[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
int BLI_task_scheduler_num_threads(void)
void * BLI_task_pool_user_data(TaskPool *pool)
void BLI_task_pool_work_and_wait(TaskPool *pool)
TaskPool * BLI_task_pool_create(void *userdata, eTaskPriority priority)
void BLI_task_pool_free(TaskPool *pool)
void BLI_task_pool_push(TaskPool *pool, TaskRunFunction run, void *taskdata, bool free_taskdata, TaskFreeFunction freedata)
pthread_spinlock_t SpinLock
void BLI_spin_init(SpinLock *spin)
void BLI_spin_unlock(SpinLock *spin)
void BLI_spin_lock(SpinLock *spin)
void BLI_spin_end(SpinLock *spin)
#define IN_RANGE_INCL(a, b, c)
#define DNA_struct_default_get(struct_name)
#define MASK_DRAWFLAG_SPLINE
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_PROXY_RENDER_SIZE_FULL
#define IMG_SIZE_FALLBACK
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
void IMB_colormanagement_colorspace_to_scene_linear_v3(float pixel[3], struct ColorSpace *colorspace)
struct ImBuf * IMB_ibImageFromMemory(const unsigned char *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
Platform independent time functions.
void UI_view2d_view_to_region(const struct View2D *v2d, float x, float y, int *r_region_x, int *r_region_y) ATTR_NONNULL()
@ WM_JOB_TYPE_CLIP_PREFETCH
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
static bool prefetch_movie_frame(MovieClip *clip, MovieClip *clip_local, int frame, short render_size, short render_flag, short *stop)
void ED_space_clip_set_clip(bContext *C, bScreen *screen, SpaceClip *sc, MovieClip *clip)
void ED_clip_view_lock_state_restore_no_jump(const bContext *C, const ClipViewLockState *state)
ImBuf * ED_space_clip_get_buffer(SpaceClip *sc)
void ED_space_clip_get_size(SpaceClip *sc, int *width, int *height)
struct PrefetchQueue PrefetchQueue
bool ED_space_clip_get_position(struct SpaceClip *sc, struct ARegion *region, int mval[2], float fpos[2])
void ED_space_clip_set_mask(bContext *C, SpaceClip *sc, Mask *mask)
void ED_space_clip_get_aspect(SpaceClip *sc, float *aspx, float *aspy)
bool ED_space_clip_maskedit_visible_splines_poll(bContext *C)
static int prefetch_get_start_frame(const bContext *C)
static bool prefetch_check_early_out(const bContext *C)
void ED_clip_select_all(SpaceClip *sc, int action, bool *r_has_selection)
static void prefetch_startjob(void *pjv, short *stop, short *do_update, float *progress)
void ED_clip_update_frame(const Main *mainp, int cfra)
int ED_space_clip_get_clip_frame_number(SpaceClip *sc)
bool ED_space_clip_maskedit_poll(bContext *C)
void ED_clip_point_stable_pos(SpaceClip *sc, ARegion *region, float x, float y, float *xr, float *yr)
bool ED_space_clip_view_clip_poll(bContext *C)
static void prefetch_task_func(TaskPool *__restrict pool, void *task_data)
bool ED_space_clip_color_sample(SpaceClip *sc, ARegion *region, const int mval[2], float r_col[3])
static int prefetch_get_final_frame(const bContext *C)
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)
void ED_space_clip_get_zoom(SpaceClip *sc, ARegion *region, float *zoomx, float *zoomy)
static uchar * prefetch_read_file_to_memory(MovieClip *clip, int current_frame, short render_size, short render_flag, size_t *r_size)
bool ED_space_clip_maskedit_mask_poll(bContext *C)
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?...
static uchar * prefetch_thread_next_frame(PrefetchQueue *queue, MovieClip *clip, size_t *r_size, int *r_current_frame)
MovieClip * ED_space_clip_get_clip(SpaceClip *sc)
static void prefetch_freejob(void *pjv)
void ED_space_clip_get_aspect_dimension_aware(SpaceClip *sc, float *aspx, float *aspy)
bool ED_space_clip_poll(bContext *C)
void ED_clip_view_lock_state_store(const bContext *C, ClipViewLockState *state)
ImBuf * ED_space_clip_get_stable_buffer(SpaceClip *sc, float loc[2], float *scale, float *angle)
void ED_space_clip_get_size_fl(SpaceClip *sc, float size[2])
struct PrefetchJob PrefetchJob
void ED_clip_mouse_pos(SpaceClip *sc, ARegion *region, const int mval[2], float co[2])
void clip_start_prefetch_job(const bContext *C)
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)
void ED_clip_point_undistorted_pos(SpaceClip *sc, const float co[2], float r_co[2])
Mask * ED_space_clip_get_mask(SpaceClip *sc)
bool ED_clip_view_selection(const bContext *C, ARegion *UNUSED(region), bool fit)
bool ED_space_clip_check_show_trackedit(SpaceClip *sc)
bool ED_space_clip_maskedit_mask_visible_splines_poll(bContext *C)
static bool check_prefetch_break(void)
bool ED_space_clip_check_show_maskedit(SpaceClip *sc)
bool ED_space_clip_tracking_poll(bContext *C)
static int prefetch_find_uncached_frame(MovieClip *clip, int from_frame, int end_frame, short render_size, short render_flag, short direction)
bool clip_view_calculate_view_selection(const struct bContext *C, bool fit, float *r_offset_x, float *r_offset_y, float *r_zoom)
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
ccl_gpu_kernel_postfix ccl_global float int int sy
ccl_gpu_kernel_postfix ccl_global float int sx
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static void area(int d1, int d2, int e1, int e2, float weights[2])
struct ColorSpace * rect_colorspace
struct MovieTracking tracking
ColorManagedColorspaceSettings colorspace_settings
struct MovieTrackingPlaneTrack * next
struct MovieTrackingTrack * next
MovieTrackingCamera camera
struct MovieClipUser user
struct MovieClipScopes scopes
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_type)
bScreen * WM_window_get_active_screen(const wmWindow *win)