69 switch (render_size) {
84 switch (render_size) {
102 if (proxy ==
nullptr) {
131 char suffix[24] = {
'\0'};
135 if (proxy ==
nullptr) {
156 STRNCPY(dirpath,
"//BL_proxy");
189 if (seq->
strip->
proxy ==
nullptr || !context->use_proxies) {
202 context->preview_render_size);
213 if (proxy->
anim ==
nullptr) {
215 context->scene, seq, timeline_frame, psize, filepath, context->view_id) == 0)
222 if (proxy->
anim ==
nullptr) {
236 context->scene, seq, timeline_frame, psize, filepath, context->view_id) == 0)
258 int proxy_render_size,
259 const bool overwrite)
264 ImBuf *ibuf_tmp, *ibuf;
265 Scene *scene = context->scene;
283 rectx = (proxy_render_size * ibuf_tmp->
x) / 100;
284 recty = (proxy_render_size * ibuf_tmp->
y) / 100;
286 if (ibuf_tmp->
x != rectx || ibuf_tmp->
y != recty) {
347 prefix_vars->
prefix[0] =
'\0';
348 prefix_vars->
ext =
nullptr;
357 if (prefix_vars->
prefix[0] ==
'\0') {
417 return (required_proxies & built_proxies) != required_proxies;
426 bool build_only_on_bad_performance)
445 for (i = 0; i < num_files; i++) {
470 context->bmain = bmain;
472 context->scene =
scene;
473 context->orig_seq = seq;
477 context->view_id = i;
491 build_only_on_bad_performance);
493 if (!context->index_context) {
508 const bool overwrite = context->overwrite;
511 Scene *scene = context->scene;
512 Main *bmain = context->bmain;
516 if (context->index_context) {
518 &worker_status->
stop,
540 bmain, context->depsgraph, context->scene, width, height, 100,
false, &render_context);
544 render_context.
view_id = context->view_id;
570 if (worker_status->
stop ||
G.is_break) {
578 if (context->index_context) {
600 seq->
flag &= ~SEQ_USE_PROXY;
ImBufAnim * openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
const char * BKE_main_blendfile_path_from_global()
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
int BKE_scene_multiview_num_views_get(const RenderData *rd)
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_access(const char *filepath, int mode) 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)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
struct LinkData * BLI_genericNodeN(void *data)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
#define BLI_path_join(...)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
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
Compatibility-like things for windows.
const char * dirname(char *path)
@ SEQ_STORAGE_PROXY_CUSTOM_FILE
@ SEQ_STORAGE_PROXY_CUSTOM_DIR
@ SEQ_PROXY_SKIP_EXISTING
@ SEQ_EDIT_PROXY_DIR_STORAGE
eSpaceSeq_Proxy_RenderSize
@ SEQ_RENDER_SIZE_PROXY_25
@ SEQ_RENDER_SIZE_PROXY_75
@ SEQ_RENDER_SIZE_PROXY_50
@ SEQ_RENDER_SIZE_PROXY_100
void IMB_anim_index_rebuild(IndexBuildContext *context, bool *stop, bool *do_update, float *progress)
ImBuf * IMB_dupImBuf(const ImBuf *ibuf1)
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)
int IMB_anim_index_get_frame_index(ImBufAnim *anim, IMB_Timecode_Type tc, int position)
ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
int IMB_anim_proxy_get_existing(ImBufAnim *anim)
void IMB_anim_index_rebuild_finish(IndexBuildContext *context, bool stop)
void IMB_free_anim(ImBufAnim *anim)
IndexBuildContext * IMB_anim_index_rebuild_context(ImBufAnim *anim, IMB_Timecode_Type tcs_in_use, int proxy_sizes_in_use, int quality, const bool overwrite, GSet *file_list, bool build_only_on_bad_performance)
void IMB_close_anim_proxies(ImBufAnim *anim)
void IMB_anim_get_filename(ImBufAnim *anim, char *filename, int filename_maxncpy)
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.
Read Guarded memory(de)allocation.
const Depsgraph * depsgraph
draw_view in_light_buf[] float
bool IMB_saveiff(struct ImBuf *, const char *, int)
void IMB_freeImBuf(ImBuf *)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void seq_multiview_name(Scene *scene, const int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size)
static bool seq_proxy_multiview_context_invalid(Sequence *seq, Scene *scene, const int view_id, MultiViewPrefixVars *prefix_vars)
void free_proxy_seq(Sequence *seq)
bool seq_proxy_get_custom_file_filepath(Sequence *seq, char *filepath, const int view_id)
void seq_proxy_index_dir_set(ImBufAnim *anim, const char *base_dir)
static bool seq_proxy_get_filepath(Scene *scene, Sequence *seq, int timeline_frame, eSpaceSeq_Proxy_RenderSize render_size, char *filepath, const int view_id)
static void seq_proxy_build_frame(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, int timeline_frame, int proxy_render_size, const bool overwrite)
bool SEQ_proxy_rebuild_context(Main *bmain, Depsgraph *depsgraph, Scene *scene, Sequence *seq, GSet *file_list, ListBase *queue, bool build_only_on_bad_performance)
ImBuf * seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int timeline_frame)
void SEQ_proxy_set(Sequence *seq, bool value)
static int seq_proxy_context_count(Sequence *seq, Scene *scene)
int SEQ_rendersize_to_proxysize(int render_size)
bool SEQ_can_use_proxy(const SeqRenderData *context, const Sequence *seq, int psize)
void SEQ_proxy_rebuild_finish(SeqIndexBuildContext *context, bool stop)
static bool seq_proxy_need_rebuild(Sequence *seq, ImBufAnim *anim)
double SEQ_rendersize_to_scale_factor(int render_size)
void SEQ_proxy_rebuild(SeqIndexBuildContext *context, wmJobWorkerStatus *worker_status)
void SEQ_render_new_render_data(Main *bmain, Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, SeqRenderData *r_context)
void seq_imbuf_assign_spaces(const Scene *scene, ImBuf *ibuf)
StripElem * SEQ_render_give_stripelem(const Scene *scene, const Sequence *seq, int timeline_frame)
ImBuf * seq_render_strip(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)
Sequence * SEQ_sequence_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag)
StripProxy * seq_strip_proxy_alloc()
void seq_free_sequence_recurse(Scene *scene, Sequence *seq, const bool do_id_user)
Editing * SEQ_editing_get(const Scene *scene)
void SEQ_relations_sequence_free_anim(Sequence *seq)
float SEQ_give_frame_index(const Scene *scene, const Sequence *seq, float timeline_frame)
int SEQ_time_left_handle_frame_get(const Scene *, const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
ImbFormatOptions foptions
IndexBuildContext * index_context
ColorManagedColorspaceSettings colorspace_settings