97 if (screen->animtimer) {
108 if (screen->scrubbing) {
202 *start = pfjob->
cfra;
244 if (cfra > pfjob->
cfra) {
245 int delta = cfra - pfjob->
cfra;
255 if (cfra < pfjob->cfra) {
373 for (
int i = 0; i <
count; i++) {
380 int cached_types = 0;
507 context->scene->ed->prefetch_job = pfjob;
struct AnimData * BKE_animdata_from_id(struct ID *id)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
void BKE_animsys_evaluate_animdata(struct ID *id, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context, eAnimData_Recalc recalc, const bool flush_to_original)
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
struct Main * BKE_main_new(void)
void BKE_main_free(struct Main *mainvar)
#define LISTBASE_FOREACH(type, var, list)
void BLI_mutex_end(ThreadMutex *mutex)
void BLI_threadpool_remove(struct ListBase *threadbase, void *callerdata)
void BLI_condition_wait(ThreadCondition *cond, ThreadMutex *mutex)
void BLI_threadpool_init(struct ListBase *threadbase, void *(*do_thread)(void *), int tot)
void BLI_mutex_init(ThreadMutex *mutex)
pthread_cond_t ThreadCondition
void BLI_condition_end(ThreadCondition *cond)
void BLI_threadpool_end(struct ListBase *threadbase)
void BLI_condition_notify_one(ThreadCondition *cond)
void BLI_condition_init(ThreadCondition *cond)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
void BLI_threadpool_insert(struct ListBase *threadbase, void *callerdata)
pthread_mutex_t ThreadMutex
Depsgraph * DEG_graph_new(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, eEvaluationMode mode)
struct Depsgraph Depsgraph
void DEG_evaluate_on_framechange(Depsgraph *graph, float ctime)
void DEG_graph_free(Depsgraph *graph)
void DEG_graph_build_for_render_pipeline(struct Depsgraph *graph)
void DEG_debug_name_set(struct Depsgraph *depsgraph, const char *name)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_CACHE_PREFETCH_ENABLE
_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 type
void IMB_freeImBuf(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
@ SEQ_TASK_PREFETCH_RENDER
bool seq_cache_is_full(void)
void seq_cache_free_temp_cache(Scene *scene, short id, int timeline_frame)
struct ImBuf * seq_cache_get(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type)
bool seq_cache_recycle_item(Scene *scene)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void seq_prefetch_get_time_range(Scene *scene, int *start, int *end)
void seq_prefetch_free(Scene *scene)
bool seq_prefetch_job_is_running(Scene *scene)
static void * seq_prefetch_frames(void *job)
static void seq_prefetch_update_area(PrefetchJob *pfjob)
bool SEQ_prefetch_need_redraw(Main *bmain, Scene *scene)
void SEQ_prefetch_stop(Scene *scene)
static PrefetchJob * seq_prefetch_job_get(Scene *scene)
static bool seq_prefetch_job_is_waiting(Scene *scene)
static bool seq_prefetch_do_skip_frame(PrefetchJob *pfjob, ListBase *seqbase)
static void seq_prefetch_update_depsgraph(PrefetchJob *pfjob)
static float seq_prefetch_cfra(PrefetchJob *pfjob)
void SEQ_prefetch_stop_all(void)
static void seq_prefetch_do_suspend(PrefetchJob *pfjob)
void seq_prefetch_start(const SeqRenderData *context, float timeline_frame)
static void seq_prefetch_update_context(const SeqRenderData *context)
static PrefetchJob * seq_prefetch_start_ex(const SeqRenderData *context, float cfra)
Sequence * seq_prefetch_get_original_sequence(Sequence *seq, Scene *scene)
static bool seq_prefetch_is_playing(Main *bmain)
static AnimationEvalContext seq_prefetch_anim_eval_context(PrefetchJob *pfjob)
static void seq_prefetch_update_scene(Scene *scene)
static void seq_prefetch_init_depsgraph(PrefetchJob *pfjob)
static void seq_prefetch_resume(Scene *scene)
static bool seq_prefetch_is_cache_full(Scene *scene)
struct PrefetchJob PrefetchJob
static bool seq_prefetch_need_suspend(PrefetchJob *pfjob)
static bool seq_prefetch_is_scrubbing(Main *bmain)
static void seq_prefetch_free_depsgraph(PrefetchJob *pfjob)
static Sequence * sequencer_prefetch_get_original_sequence(Sequence *seq, ListBase *seqbase)
SeqRenderData * seq_prefetch_get_original_context(const SeqRenderData *context)
ImBuf * SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown)
void SEQ_render_new_render_data(Main *bmain, struct Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, SeqRenderData *r_context)
int seq_get_shown_sequences(ListBase *seqbasep, int timeline_frame, int chanshown, Sequence **seq_arr_out)
struct SELECTID_Context context
ListBase * SEQ_active_seqbase_get(const Editing *ed)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
struct PrefetchJob * prefetch_job
struct PrefetchJob * next
ThreadCondition prefetch_suspend_cond
int num_frames_prefetched
struct ListBase * seqbasep_cpy
struct PrefetchJob * prev
struct Scene * scene_eval
struct Depsgraph * depsgraph
struct ListBase * seqbasep
struct SeqRenderData context_cpy
struct SeqRenderData context
ThreadMutex prefetch_suspend_mutex