25#define DNA_DEPRECATED_ALLOW
102 std::optional<Library *> ,
113 movie_clip_dst->
anim =
nullptr;
114 movie_clip_dst->
cache =
nullptr;
158 function_callback(
id, &key, (
void **)&movie_clip->
cache, 0, user_data);
201 if (reconstruction->
camnr) {
212 clip->
anim =
nullptr;
251 reader, plane_track->point_tracksnr, (
void **)&plane_track->point_tracks);
252 for (
int i = 0;
i < plane_track->point_tracksnr;
i++) {
273 clip->
anim =
nullptr;
368 switch (render_size) {
429 int proxy_render_size,
471#ifdef WITH_IMAGE_OPENEXR
475struct MultilayerConvertContext {
476 float *combined_pass;
477 int num_combined_channels;
482static void *movieclip_convert_multilayer_add_view(
void * ,
const char * )
487static void *movieclip_convert_multilayer_add_layer(
void *ctx_v,
const char * )
494static void movieclip_convert_multilayer_add_pass(
void * ,
496 const char *pass_name,
504 MultilayerConvertContext *ctx =
static_cast<MultilayerConvertContext *
>(ctx_v);
506 if (ctx->combined_pass !=
nullptr) {
511 ctx->combined_pass = rect;
512 ctx->num_combined_channels = num_channels;
523 if (ibuf ==
nullptr) {
526#ifdef WITH_IMAGE_OPENEXR
530 MultilayerConvertContext ctx;
531 ctx.combined_pass =
nullptr;
532 ctx.num_combined_channels = 0;
535 movieclip_convert_multilayer_add_view,
536 movieclip_convert_multilayer_add_layer,
537 movieclip_convert_multilayer_add_pass);
538 if (ctx.combined_pass !=
nullptr) {
541 ibuf->
channels = ctx.num_combined_channels;
556 bool use_proxy =
false;
573 colorspace =
nullptr;
617 ImBuf *ibuf =
nullptr;
743 return framenr - index;
783 return priority_data;
855 if (clip->
cache ==
nullptr) {
932 if (!width || !height) {
961 STRNCPY(filepath_abs, filepath);
996 STRNCPY(filepath_abs, filepath);
1045 *width =
float(*width) * 4.0f / 3.0f;
1046 *height =
float(*height) * 4.0f / 3.0f;
1058 distortion, &clip->
tracking, ibuf, ibuf->
x, ibuf->
y, 0.0f,
true);
1081 int postprocess_flag)
1083 bool result = (postprocess_flag != 0);
1131 int postprocess_flag)
1136 int render_flag = 0;
1179 ImBuf *postproc_ibuf =
nullptr;
1188 if (postprocess_flag) {
1194 if (disable_red || disable_green || disable_blue || grayscale) {
1199 return postproc_ibuf;
1247 ImBuf *ibuf =
nullptr;
1249 bool need_postprocess =
false;
1260 need_postprocess =
true;
1269 bool use_sequence =
false;
1291 if (need_postprocess) {
1292 ImBuf *tmpibuf = ibuf;
1311 clip, &user_fallback,
flag, postprocess_flag, cache_flag);
1325 const int cache_flag)
1332 const int postprocess_flag)
1339 ImBuf *reference_ibuf,
1341 const int postprocess_flag)
1346 float tloc[2], tscale, tangle;
1348 int render_flag = 0;
1386 clip, clip_framenr, stableibuf->
x, stableibuf->
y, tloc, &tscale, &tangle);
1404 const int postprocess_flag)
1409 float tloc[2], tscale, tangle;
1447 const int postprocess_flag,
1452 ImBuf *ibuf, *stableibuf =
nullptr;
1498 if (stableibuf != ibuf) {
1531 if (ibuf && ibuf->
x && ibuf->
y) {
1549 r_size[0] =
float(width);
1550 r_size[1] =
float(height);
1568 if (clip->
anim ==
nullptr) {
1588 *r_points =
nullptr;
1621 clip->
cache =
nullptr;
1626 clip->
anim =
nullptr;
1690 scopes->
marker =
nullptr;
1691 scopes->
track =
nullptr;
1697 if (clip ==
nullptr) {
1703 if (track ==
nullptr) {
1711 scopes->
track = track;
1730 undist_marker.
pos[0] *= width;
1731 undist_marker.
pos[1] *= height * aspy;
1734 &clip->
tracking, width, height, undist_marker.
pos, undist_marker.
pos);
1736 undist_marker.
pos[0] /= width;
1737 undist_marker.
pos[1] /= height * aspy;
1741 ibuf, track, &undist_marker,
true,
true);
1755 float pat_min[2], pat_max[2];
1772 int proxy_render_size,
1777 int quality, rectx, recty;
1782 rectx = ibuf->
x *
size / 100.0f;
1783 recty = ibuf->
y *
size / 100.0f;
1791 if (scaleibuf->
planes == 32) {
1815 const int *build_sizes,
1833 ImBuf *tmpibuf = ibuf;
1840 for (
i = 0;
i < build_count;
i++) {
1846 if (tmpibuf != ibuf) {
1856 const int *build_sizes,
1865 ImBuf *tmpibuf = ibuf;
1872 for (
i = 0;
i < build_count;
i++) {
1876 if (tmpibuf != ibuf) {
1921 ImBuf *ibuf =
nullptr;
1932 bool has_frame =
false;
2001 if (tex ==
nullptr) {
2017 if (clip ==
nullptr) {
2028 if (ibuf ==
nullptr) {
2029 CLOG_ERROR(&
LOG,
"Failed to create GPU texture from Blender movie clip");
2035 const bool high_bitdepth =
false;
2052 const int MOVIECLIP_NUM_GPUTEXTURES = 1;
bool BKE_bpath_foreach_path_fixed_process(BPathForeachPathData *bpath_data, char *path, size_t path_maxncpy)
void(*)(ID *id, const IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data) IDTypeForeachCacheFunctionCallback
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
MovieReader * openanim(const char *filepath, int ibuf_flags, int streamindex, bool keep_original_colorspace, char colorspace[IMA_MAX_SPACE])
void * BKE_id_new(Main *bmain, short type, const char *name)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
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])
File and directory operations.
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(ListBase *lb)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_pophead(ListBase *listbase) 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])
ATTR_WARN_UNUSED_RESULT const size_t num
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 SNPRINTF(dst, format,...)
char char size_t char * BLI_strncat(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
char * STRNCPY(char(&dst)[N], const char *src)
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)
#define BLO_read_struct(reader, struct_name, ptr_p)
void BLO_write_pointer_array(BlendWriter *writer, int64_t num, const void *data_ptr)
void BLO_read_pointer_array(BlendDataReader *reader, int64_t array_size, void **ptr_p)
#define BLT_I18NCONTEXT_ID_MOVIECLIP
#define CLOG_ERROR(clg_ref,...)
uint64_t DEG_get_update_count(const Depsgraph *depsgraph)
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)
T * DEG_get_original(T *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_USE_PROXY_CUSTOM_DIR
@ MCLIP_PROXY_RENDER_USE_FALLBACK_RENDER
@ MCLIP_PROXY_RENDER_UNDISTORT
@ 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
#define RE_PASSNAME_COMBINED
#define IMG_SIZE_FALLBACK
@ TRACKING_2D_STABILIZATION
void GPU_texture_mipmap_mode(blender::gpu::Texture *texture, bool use_mipmap, bool use_filter)
blender::gpu::Texture * GPU_texture_create_error(int dimension, bool array)
void GPU_texture_free(blender::gpu::Texture *texture)
ImBuf * IMB_load_image_from_filepath(const char *filepath, const int flags, char r_colorspace[IM_MAX_SPACE]=nullptr)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
blender::gpu::Texture * IMB_create_gpu_texture(const char *name, ImBuf *ibuf, bool use_high_bitdepth, bool use_premult)
void IMB_assign_float_buffer(ImBuf *ibuf, float *buffer_data, ImBufOwnership ownership)
void IMB_freeImBuf(ImBuf *ibuf)
void IMB_refImBuf(ImBuf *ibuf)
ImBuf * IMB_scale_into_new(const ImBuf *ibuf, unsigned int newx, unsigned int newy, IMBScaleFilter filter, bool threaded=true)
bool IMB_save_image(ImBuf *ibuf, const char *filepath, const int flags)
bool IMB_scale(ImBuf *ibuf, unsigned int newx, unsigned int newy, IMBScaleFilter filter, bool threaded=true)
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(ExrHandle *handle)
void IMB_exr_multilayer_convert(ExrHandle *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.
BMesh const char void * data
BPy_StructRNA * depsgraph
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void MOV_set_custom_proxy_dir(MovieReader *anim, const char *dir)
void MOV_close(MovieReader *anim)
int MOV_get_duration_frames(MovieReader *anim, IMB_Timecode_Type tc)
float MOV_get_fps(const MovieReader *anim)
ImBuf * MOV_decode_frame(MovieReader *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
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)
static blender::gpu::Texture ** movieclip_get_gputexture_ptr(MovieClip *clip, MovieClipUser *cuser, eGPUTextureTarget textarget)
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)
blender::gpu::Texture * BKE_movieclip_get_gpu_texture(MovieClip *clip, MovieClipUser *cuser)
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 void movieclip_build_proxy_ibuf(const MovieClip *clip, const ImBuf *ibuf, int cfra, int proxy_render_size, bool undistorted, bool threaded)
static void movie_clip_runtime_reset(MovieClip *clip)
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)
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)
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)
unsigned int id_session_uid
ImBufFloatBuffer float_buffer
ImbFormatOptions foptions
ImBufByteBuffer byte_buffer
struct MovieClipCache::@075054362334176072160251166206245170224323103351 stabilized
struct MovieClipCache::@273040017035212004373306135155220132016177004360 postprocessed
struct ImBuf * track_preview
struct ImBuf * track_search
struct MovieTrackingMarker undist_marker
struct MovieTrackingMarker * marker
struct MovieTrackingTrack * track
GPUTexture * gputexture[3]
struct ListBase gputextures
struct MovieClipCache * cache
struct MovieReader * anim
struct MovieClipProxy proxy
struct MovieClip_Runtime runtime
struct MovieTracking tracking
ColorManagedColorspaceSettings colorspace_settings
ListBase coverage_segments
MovieTrackingTrack * active_track
struct MovieReconstructedCamera * cameras
MovieTrackingTrack * rot_track_legacy
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
MovieTrackingDopesheet dopesheet
MovieTrackingStats * stats
MovieTrackingPlaneTrack * act_plane_track_legacy
MovieTrackingReconstruction reconstruction_legacy
MovieTrackingStabilization stabilization
ListBase plane_tracks_legacy
MovieTrackingTrack * act_track_legacy
MovieTrackingCamera camera