25#define DNA_DEPRECATED_ALLOW
86 std::optional<Library *> ,
97 movie_clip_dst->
anim =
nullptr;
98 movie_clip_dst->
cache =
nullptr;
145 function_callback(
id, &key, (
void **)&movie_clip->
cache, 0, user_data);
199 clip->
anim =
nullptr;
200 clip->tracking_context =
nullptr;
201 clip->tracking.stats =
nullptr;
238 reader, plane_track->point_tracksnr, (
void **)&plane_track->point_tracks);
239 for (
int i = 0; i < plane_track->point_tracksnr; i++) {
260 clip->anim =
nullptr;
261 clip->tracking_context =
nullptr;
262 clip->tracking.stats =
nullptr;
271 clip->tracking.dopesheet.ok = 0;
323 BLI_strncpy(num, full_name + head_len, numlen + 1);
356 switch (render_size) {
382 return clip->proxy.tc;
393 BLI_strncpy(filepath, clip->filepath,
sizeof(clip->filepath));
406 offset + framenr - clip->start_frame + clip->frame_offset);
409 BLI_strncpy(filepath, clip->filepath,
sizeof(clip->filepath));
417 int proxy_render_size,
424 int proxynr = framenr - clip->start_frame + 1 + clip->frame_offset;
462 float *combined_pass;
463 int num_combined_channels;
466static void *movieclip_convert_multilayer_add_view(
void * ,
const char * )
471static void *movieclip_convert_multilayer_add_layer(
void *ctx_v,
const char * )
478static void movieclip_convert_multilayer_add_pass(
void * ,
480 const char *pass_name,
490 if (ctx->combined_pass !=
nullptr) {
495 ctx->combined_pass = rect;
496 ctx->num_combined_channels = num_channels;
507 if (ibuf ==
nullptr) {
515 ctx.combined_pass =
nullptr;
516 ctx.num_combined_channels = 0;
519 movieclip_convert_multilayer_add_view,
520 movieclip_convert_multilayer_add_layer,
521 movieclip_convert_multilayer_add_pass);
522 if (ctx.combined_pass !=
nullptr) {
525 ibuf->
channels = ctx.num_combined_channels;
554 colorspace = clip->colorspace_settings.name;
557 colorspace =
nullptr;
562 colorspace = clip->colorspace_settings.name;
579 STRNCPY(filepath_abs, clip->filepath);
583 clip->anim =
openanim(filepath_abs,
IB_rect, 0, clip->colorspace_settings.name);
601 ImBuf *ibuf =
nullptr;
608 int fra = framenr - clip->start_frame + clip->frame_offset;
710 index = framenr - clip->start_frame + clip->frame_offset;
713 if (clip->cache->sequence_offset == -1) {
723 index += clip->cache->sequence_offset;
727 return framenr - index;
755 return ((a->framenr !=
b->framenr) || (a->proxy !=
b->proxy) ||
756 (a->render_flag !=
b->render_flag));
765 MEM_callocN(
sizeof(*priority_data),
"movie cache clip priority data"));
768 return priority_data;
791 if (!clip->cache->is_still_sequence) {
840 if (clip->cache ==
nullptr) {
858 clip->cache->moviecache = moviecache;
859 clip->cache->sequence_offset = -1;
863 clip->cache->is_still_sequence = (numlen == 0);
867 if (!clip->cache->is_still_sequence) {
918 if (!width || !height) {
928 STRNCPY(filepath, clip->filepath);
947 STRNCPY(filepath_abs, filepath);
961 STRNCPY(clip->filepath, filepath);
966 if (clip->lastsize[0]) {
967 int width = clip->lastsize[0];
969 clip->tracking.camera.focal = 24.0f * width / clip->tracking.camera.sensor_width;
982 STRNCPY(filepath_abs, filepath);
987 clip =
static_cast<MovieClip *
>(clip->id.next))
989 STRNCPY(filepath_test, clip->filepath);
1031 *width =
float(*width) * 4.0f / 3.0f;
1032 *height =
float(*height) * 4.0f / 3.0f;
1044 distortion, &clip->tracking, ibuf, ibuf->
x, ibuf->
y, 0.0f,
true);
1057 bool result =
false;
1067 int postprocess_flag)
1069 bool result = (postprocess_flag != 0);
1117 int postprocess_flag)
1122 int render_flag = 0;
1130 if (!clip->cache || !clip->cache->postprocessed.ibuf) {
1165 ImBuf *postproc_ibuf =
nullptr;
1174 if (postprocess_flag) {
1180 if (disable_red || disable_green || disable_blue || grayscale) {
1185 return postproc_ibuf;
1233 ImBuf *ibuf =
nullptr;
1235 bool need_postprocess =
false;
1246 need_postprocess =
true;
1255 bool use_sequence =
false;
1274 real_ibuf_size(clip, user, ibuf, &clip->lastsize[0], &clip->lastsize[1]);
1277 if (need_postprocess) {
1278 ImBuf *tmpibuf = ibuf;
1297 clip, &user_fallback,
flag, postprocess_flag, cache_flag);
1311 const int cache_flag)
1318 const int postprocess_flag)
1325 ImBuf *reference_ibuf,
1327 const int postprocess_flag)
1332 float tloc[2], tscale, tangle;
1334 int render_flag = 0;
1372 clip, clip_framenr, stableibuf->
x, stableibuf->
y, tloc, &tscale, &tangle);
1390 const int postprocess_flag)
1395 float tloc[2], tscale, tangle;
1433 const int postprocess_flag,
1438 ImBuf *ibuf, *stableibuf =
nullptr;
1484 if (stableibuf != ibuf) {
1510 if (clip->lastsize[0] != 0 && clip->lastsize[1] != 0) {
1511 *r_width = clip->lastsize[0];
1512 *r_height = clip->lastsize[1];
1517 if (ibuf && ibuf->
x && ibuf->
y) {
1521 *r_width = clip->lastsize[0];
1522 *r_height = clip->lastsize[1];
1535 r_size[0] =
float(width);
1536 r_size[1] =
float(height);
1554 if (clip->anim ==
nullptr) {
1560 return float(frs_sec) / frs_sec_base;
1570 *aspy = clip->aspy / clip->aspx / clip->tracking.camera.pixel_aspect;
1579 *r_points =
nullptr;
1586 clip->cache->moviecache, proxy, user->
render_flag, r_totseg, r_points);
1603 if (clip->cache->postprocessed.ibuf) {
1607 if (clip->cache->stabilized.ibuf) {
1612 clip->cache =
nullptr;
1617 clip->anim =
nullptr;
1625 if (
tex->gputexture[i] !=
nullptr) {
1627 tex->gputexture[i] =
nullptr;
1641 if (clip->cache && clip->cache->moviecache) {
1655 clip->lastsize[0] = clip->lastsize[1] = 0;
1681 scopes->
marker =
nullptr;
1682 scopes->
track =
nullptr;
1688 if (clip ==
nullptr) {
1694 if (track ==
nullptr) {
1702 scopes->
track = track;
1717 float aspy = 1.0f / clip->tracking.camera.pixel_aspect;
1721 undist_marker.
pos[0] *= width;
1722 undist_marker.
pos[1] *= height * aspy;
1725 &clip->tracking, width, height, undist_marker.
pos, undist_marker.
pos);
1727 undist_marker.
pos[0] /= width;
1728 undist_marker.
pos[1] /= height * aspy;
1732 ibuf, track, &undist_marker,
true,
true);
1746 float pat_min[2], pat_max[2];
1761 MovieClip *clip,
ImBuf *ibuf,
int cfra,
int proxy_render_size,
bool undistorted,
bool threaded)
1764 int quality, rectx, recty;
1770 rectx = ibuf->
x * size / 100.0f;
1771 recty = ibuf->
y * size / 100.0f;
1776 quality = clip->proxy.quality;
1780 if (scaleibuf->
planes == 32) {
1804 const int *build_sizes,
1822 ImBuf *tmpibuf = ibuf;
1829 for (i = 0; i < build_count; i++) {
1835 if (tmpibuf != ibuf) {
1845 const int *build_sizes,
1854 ImBuf *tmpibuf = ibuf;
1861 for (i = 0; i < build_count; i++) {
1865 if (tmpibuf != ibuf) {
1878 return framenr -
float(clip->start_frame) + 1.0f;
1883 return framenr +
float(clip->start_frame) - 1.0f;
1910 ImBuf *ibuf =
nullptr;
1921 bool has_frame =
false;
1989 if (
tex ==
nullptr) {
1994 tex->gputexture[i] =
nullptr;
2001 return &
tex->gputexture[textarget];
2006 if (clip ==
nullptr) {
2017 if (ibuf ==
nullptr) {
2018 fprintf(stderr,
"GPUTexture: Blender Texture Not Loaded!\n");
2024 const bool high_bitdepth =
false;
2041 const int MOVIECLIP_NUM_GPUTEXTURES = 1;
2045 &clip->runtime.gputextures);
2048 if (
tex->gputexture[i]) {
2050 tex->gputexture[i] =
nullptr;
bool BKE_bpath_foreach_path_fixed_process(BPathForeachPathData *bpath_data, char *path, size_t path_maxncpy)
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
void(*)(ID *id, const IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data) IDTypeForeachCacheFunctionCallback
ImBufAnim * openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void * BKE_id_new(Main *bmain, short type, const char *name)
void BKE_id_blend_write(BlendWriter *writer, ID *id)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
const char * BKE_main_blendfile_path_from_global()
#define MOVIECLIP_CACHE_SKIP
#define MOVIECLIP_PREVIEW_GRAYSCALE
#define MOVIECLIP_DISABLE_BLUE
#define MOVIECLIP_DISABLE_RED
#define MOVIECLIP_DISABLE_GREEN
void BKE_ntree_update_tag_id_changed(Main *bmain, ID *id)
void BKE_tracking_settings_init(struct MovieTracking *tracking)
void BKE_tracking_disable_channels(struct ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale)
struct ImBuf * BKE_tracking_stabilize_frame(struct MovieClip *clip, int framenr, struct ImBuf *ibuf, float translation[2], float *scale, float *angle)
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct ImBuf * BKE_tracking_undistort_frame(struct MovieTracking *tracking, struct ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
void BKE_tracking_free(struct MovieTracking *tracking)
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking)
void BKE_tracking_copy(struct MovieTracking *tracking_dst, const struct MovieTracking *tracking_src, int flag)
struct ImBuf * BKE_tracking_distortion_exec(struct MovieDistortion *distortion, struct MovieTracking *tracking, struct ImBuf *ibuf, int width, int height, float overscan, bool undistort)
void BKE_tracking_stabilization_data_get(struct MovieClip *clip, int framenr, int width, int height, float translation[2], float *scale, float *angle)
struct ImBuf * BKE_tracking_get_search_imbuf(const struct ImBuf *ibuf, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker, float min[2], float max[2])
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_open(const char *filepath, int oflag, int pmode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_ensure_parent_dir_exists(const char *filepath) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_pophead(ListBase *listbase) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE bool equals_v3v3(const float v1[3], const float v2[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool equals_v4v4(const float v1[4], const float v2[4]) ATTR_WARN_UNUSED_RESULT
MINLINE bool equals_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void zero_v2(float r[2])
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
void void void const char * BLI_path_basename(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
void BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_maxncpy) ATTR_NONNULL(1
int BLI_path_sequence_decode(const char *path, char *head, size_t head_maxncpy, char *tail, size_t tail_maxncpy, unsigned short *r_digits_len)
bool BLI_path_frame(char *path, size_t path_maxncpy, int frame, int digits) ATTR_NONNULL(1)
void BLI_path_sequence_encode(char *path, size_t path_maxncpy, const char *head, const char *tail, unsigned short numlen, int pic)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
char char size_t char * BLI_strncat(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
size_t BLI_snprintf(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
void BLI_thread_unlock(int type)
void BLI_thread_lock(int type)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_read_struct_array(reader, struct_name, array_size, ptr_p)
void BLO_read_pointer_array(BlendDataReader *reader, int array_size, void **ptr_p)
#define BLO_read_struct(reader, struct_name, ptr_p)
void BLO_write_pointer_array(BlendWriter *writer, uint num, const void *data_ptr)
#define BLT_I18NCONTEXT_ID_MOVIECLIP
bool DEG_is_active(const Depsgraph *depsgraph)
void DEG_debug_print_eval(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address)
ID * DEG_get_original_id(ID *id)
#define FILTER_ID_GD_LEGACY
#define ID_BLEND_PATH_FROM_GLOBAL(_id)
#define ID_BLEND_PATH(_bmain, _id)
#define DNA_struct_default_get(struct_name)
@ MCLIP_PROXY_RENDER_SIZE_75
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_50
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ MCLIP_PROXY_RENDER_SIZE_25
@ MCLIP_PROXY_RENDER_USE_FALLBACK_RENDER
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_USE_PROXY_CUSTOM_DIR
struct MovieClip MovieClip
Object is a sort of wrapper for general info.
#define RE_PASSNAME_COMBINED
#define IMG_SIZE_FALLBACK
@ TRACKING_2D_STABILIZATION
void DRW_drawdata_free(ID *id)
void GPU_texture_free(GPUTexture *texture)
GPUTexture * GPU_texture_create_error(int dimension, bool array)
void GPU_texture_mipmap_mode(GPUTexture *texture, bool use_mipmap, bool use_filter)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
ImBuf * IMB_testiffname(const char *filepath, int flags)
ImBuf * IMB_anim_absolute(ImBufAnim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
void IMB_anim_set_index_dir(ImBufAnim *anim, const char *dir)
void IMB_assign_float_buffer(ImBuf *ibuf, float *buffer_data, ImBufOwnership ownership)
bool IMB_anim_get_fps(const ImBufAnim *anim, bool no_av_base, short *r_frs_sec, float *r_frs_sec_base)
ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
void IMB_free_anim(ImBufAnim *anim)
void IMB_refImBuf(ImBuf *ibuf)
GPUTexture * IMB_create_gpu_texture(const char *name, ImBuf *ibuf, bool use_high_bitdepth, bool use_premult)
int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc)
bool IMB_scale(ImBuf *ibuf, unsigned int newx, unsigned int newy, IMBScaleFilter filter, bool threaded=true)
Contains defines and structs used throughout the imbuf module.
bool IMB_moviecache_put_if_possible(MovieCache *cache, void *userkey, ImBuf *ibuf)
void IMB_moviecache_free(MovieCache *cache)
bool IMB_moviecache_has_frame(MovieCache *cache, void *userkey)
void IMB_moviecache_cleanup(MovieCache *cache, bool(cleanup_check_cb)(ImBuf *ibuf, void *userkey, void *userdata), void *userdata)
ImBuf * IMB_moviecache_get(MovieCache *cache, void *userkey, bool *r_is_cached_empty)
void IMB_moviecache_put(MovieCache *cache, void *userkey, ImBuf *ibuf)
void IMB_moviecache_set_getdata_callback(MovieCache *cache, MovieCacheGetKeyDataFP getdatafp)
void IMB_moviecache_set_priority_callback(MovieCache *cache, MovieCacheGetPriorityDataFP getprioritydatafp, MovieCacheGetItemPriorityFP getitempriorityfp, MovieCachePriorityDeleterFP prioritydeleterfp)
void IMB_moviecache_get_cache_segments(MovieCache *cache, int proxy, int render_flags, int *r_totseg, int **r_points)
MovieCache * IMB_moviecache_create(const char *name, int keysize, GHashHashFP hashfp, GHashCmpFP cmpfp)
void IMB_exr_close(void *handle)
void IMB_exr_multilayer_convert(void *handle, void *base, void *(*addview)(void *base, const char *str), void *(*addlayer)(void *base, const char *str), void(*addpass)(void *base, void *lay, const char *str, float *rect, int totchan, const char *chan_id, const char *view))
Read Guarded memory(de)allocation.
local_group_size(16, 16) .push_constant(Type b
const Depsgraph * depsgraph
draw_view in_light_buf[] float
bool IMB_saveiff(struct ImBuf *, const char *, int)
void IMB_freeImBuf(ImBuf *)
const ProjectiveReconstruction & reconstruction
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
static void movie_clip_foreach_path(ID *id, BPathForeachPathData *bpath_data)
static bool has_imbuf_cache(MovieClip *clip, const MovieClipUser *user, int flag)
static void movieclip_calc_length(MovieClip *clip)
void BKE_movieclip_update_scopes(MovieClip *clip, const MovieClipUser *user, MovieClipScopes *scopes)
static bool need_undistortion_postprocess(const MovieClipUser *user, int clip_flag)
static void direct_link_movieTracks(BlendDataReader *reader, ListBase *tracksbase)
static void direct_link_movieReconstruction(BlendDataReader *reader, MovieTrackingReconstruction *reconstruction)
ImBuf * BKE_movieclip_get_postprocessed_ibuf(MovieClip *clip, const MovieClipUser *user, const int postprocess_flag)
void BKE_movieclip_reload(Main *bmain, MovieClip *clip)
ImBuf * BKE_movieclip_get_stable_ibuf(MovieClip *clip, const MovieClipUser *user, const int postprocess_flag, float r_loc[2], float *r_scale, float *r_angle)
GPUTexture * BKE_movieclip_get_gpu_texture(MovieClip *clip, MovieClipUser *cuser)
MovieClip * BKE_movieclip_file_add_exists_ex(Main *bmain, const char *filepath, bool *r_exists)
static int sequence_guess_offset(const char *full_name, int head_len, ushort numlen)
float BKE_movieclip_remap_scene_to_clip_frame(const MovieClip *clip, const float framenr)
static bool moviecache_hashcmp(const void *av, const void *bv)
void BKE_movieclip_user_set_frame(MovieClipUser *user, int framenr)
static void movie_clip_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
float BKE_movieclip_get_fps(MovieClip *clip)
static bool put_imbuf_cache(MovieClip *clip, const MovieClipUser *user, ImBuf *ibuf, int flag, bool destructive)
static void direct_link_moviePlaneTracks(BlendDataReader *reader, ListBase *plane_tracks_base)
static ImBuf * get_stable_cached_frame(MovieClip *clip, const MovieClipUser *user, ImBuf *reference_ibuf, const int framenr, const int postprocess_flag)
static void free_buffers(MovieClip *clip)
static bool check_undistortion_cache_flags(const MovieClip *clip)
void BKE_movieclip_clear_proxy_cache(MovieClip *clip)
static void get_proxy_filepath(const MovieClip *clip, int proxy_render_size, bool undistorted, int framenr, char filepath[FILE_MAX])
void BKE_movieclip_clear_cache(MovieClip *clip)
float BKE_movieclip_remap_clip_to_scene_frame(const MovieClip *clip, const float framenr)
static void moviecache_prioritydeleter(void *priority_data_v)
static void * moviecache_getprioritydata(void *key_v)
bool BKE_movieclip_has_frame(MovieClip *clip, const MovieClipUser *user)
static void movieclip_load_get_size(MovieClip *clip)
static ImBuf * movieclip_load_sequence_file(MovieClip *clip, const MovieClipUser *user, int framenr, int flag)
static void write_movieReconstruction(BlendWriter *writer, MovieTrackingReconstruction *reconstruction)
static int rendersize_to_proxy(const MovieClipUser *user, int flag)
bool BKE_movieclip_proxy_enabled(MovieClip *clip)
static bool need_postprocessed_frame(const MovieClipUser *user, int clip_flag, int postprocess_flag)
static void put_postprocessed_frame_to_cache(MovieClip *clip, const MovieClipUser *user, ImBuf *ibuf, int flag, int postprocess_flag)
static void moviecache_keydata(void *userkey, int *framenr, int *proxy, int *render_flags)
static ImBuf * get_imbuf_cache(MovieClip *clip, const MovieClipUser *user, int flag)
bool BKE_movieclip_has_cached_frame(MovieClip *clip, const MovieClipUser *user)
static ImBuf * get_postprocessed_cached_frame(const MovieClip *clip, const MovieClipUser *user, int flag, int postprocess_flag)
void BKE_movieclip_build_proxy_frame_for_ibuf(MovieClip *clip, ImBuf *ibuf, MovieDistortion *distortion, int cfra, const int *build_sizes, int build_count, bool undistorted)
bool BKE_movieclip_put_frame_if_possible(MovieClip *clip, const MovieClipUser *user, ImBuf *ibuf)
static void get_sequence_filepath(const MovieClip *clip, const int framenr, char filepath[FILE_MAX])
void BKE_movieclip_get_size_fl(MovieClip *clip, const MovieClipUser *user, float r_size[2])
static ImBuf * postprocess_frame(MovieClip *clip, const MovieClipUser *user, ImBuf *ibuf, int flag, int postprocess_flag)
void BKE_movieclip_eval_update(Depsgraph *depsgraph, Main *bmain, MovieClip *clip)
static uint moviecache_hashhash(const void *keyv)
static void detect_clip_source(Main *bmain, MovieClip *clip)
static ImBuf * movieclip_load_movie_file(MovieClip *clip, const MovieClipUser *user, int framenr, int flag)
static void movieclip_eval_update_reload(Depsgraph *depsgraph, Main *bmain, MovieClip *clip)
ImBuf * BKE_movieclip_get_ibuf_flag(MovieClip *clip, const MovieClipUser *user, const int flag, const int cache_flag)
static int get_timecode(MovieClip *clip, int flag)
static void write_moviePlaneTracks(BlendWriter *writer, ListBase *plane_tracks_base)
void BKE_movieclip_convert_multilayer_ibuf(ImBuf *ibuf)
static void movieclip_build_proxy_ibuf(MovieClip *clip, ImBuf *ibuf, int cfra, int proxy_render_size, bool undistorted, bool threaded)
void BKE_movieclip_get_cache_segments(MovieClip *clip, const MovieClipUser *user, int *r_totseg, int **r_points)
static void movieclip_open_anim_file(MovieClip *clip)
int BKE_movieclip_get_duration(MovieClip *clip)
static void movieclip_eval_update_generic(Depsgraph *depsgraph, MovieClip *clip)
void BKE_movieclip_free_gputexture(MovieClip *clip)
static GPUTexture ** movieclip_get_gputexture_ptr(MovieClip *clip, MovieClipUser *cuser, eGPUTextureTarget textarget)
ImBuf * BKE_movieclip_get_ibuf(MovieClip *clip, const MovieClipUser *user)
static MovieClip * movieclip_alloc(Main *bmain, const char *name)
static void movieclip_blend_read_data(BlendDataReader *reader, ID *id)
void BKE_movieclip_filepath_for_frame(MovieClip *clip, const MovieClipUser *user, char *filepath)
static ImBuf * put_stabilized_frame_to_cache(MovieClip *clip, const MovieClipUser *user, ImBuf *ibuf, const int framenr, const int postprocess_flag)
void BKE_movieclip_get_size(MovieClip *clip, const MovieClipUser *user, int *r_width, int *r_height)
static ImBuf * get_undistorted_ibuf(MovieClip *clip, MovieDistortion *distortion, ImBuf *ibuf)
static int rendersize_to_number(int render_size)
static int moviecache_getitempriority(void *last_userkey_v, void *priority_data_v)
static void movieclip_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static void movie_clip_init_data(ID *id)
MovieClip * BKE_movieclip_file_add_exists(Main *bmain, const char *filepath)
MovieClip * BKE_movieclip_file_add(Main *bmain, const char *filepath)
static bool moviecache_check_free_proxy(ImBuf *, void *userkey, void *)
static void movie_clip_foreach_id(ID *id, LibraryForeachIDData *data)
void BKE_movieclip_get_aspect(MovieClip *clip, float *aspx, float *aspy)
static void movie_clip_copy_data(Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
void BKE_movieclip_build_proxy_frame(MovieClip *clip, int clip_flag, MovieDistortion *distortion, int cfra, const int *build_sizes, int build_count, bool undistorted)
static void real_ibuf_size(const MovieClip *clip, const MovieClipUser *user, const ImBuf *ibuf, int *width, int *height)
static void write_movieTracks(BlendWriter *writer, ListBase *tracks)
static int user_frame_to_cache_frame(MovieClip *clip, int framenr)
static ImBuf * movieclip_get_postprocessed_ibuf(MovieClip *clip, const MovieClipUser *user, int flag, int postprocess_flag, int cache_flag)
ImBuf * BKE_movieclip_anim_ibuf_for_frame_no_lock(MovieClip *clip, const MovieClipUser *user)
static void movie_clip_free_data(ID *id)
static bool use_proxy(Editing *ed, Sequence *seq)
unsigned int id_session_uid
ImBufFloatBuffer float_buffer
ImbFormatOptions foptions
ImBufByteBuffer byte_buffer
struct MovieClipCache::@89 postprocessed
struct MovieClipCache::@90 stabilized
struct ImBuf * track_preview
struct ImBuf * track_search
struct MovieTrackingMarker undist_marker
struct MovieTrackingMarker * marker
struct MovieTrackingTrack * track
struct MovieClipCache * cache
struct MovieTracking tracking
ColorManagedColorspaceSettings colorspace_settings
MovieTrackingTrack * active_track
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
MovieTrackingCamera camera
ccl_device_inline int abs(int x)