diff options
Diffstat (limited to 'source/blender/sequencer/intern/image_cache.h')
-rw-r--r-- | source/blender/sequencer/intern/image_cache.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/sequencer/intern/image_cache.h b/source/blender/sequencer/intern/image_cache.h index 60031311985..e7827c15305 100644 --- a/source/blender/sequencer/intern/image_cache.h +++ b/source/blender/sequencer/intern/image_cache.h @@ -27,15 +27,29 @@ extern "C" { #endif +#include "SEQ_render.h" /* Needed for #eSeqTaskId. */ + struct ImBuf; struct Main; struct Scene; struct SeqRenderData; struct Sequence; -#ifdef __cplusplus -} -#endif +typedef struct SeqCacheKey { + struct SeqCache *cache_owner; + void *userkey; + struct SeqCacheKey *link_prev; /* Used for linking intermediate items to final frame. */ + struct SeqCacheKey *link_next; /* Used for linking intermediate items to final frame. */ + struct Sequence *seq; + struct SeqRenderData context; + float frame_index; /* Usually same as timeline_frame. Mapped to media for RAW entries. */ + float timeline_frame; /* Only for reference - used for freeing when cache is full. */ + float cost; /* In short: render time(s) divided by playback frame duration(s) */ + bool is_temp_cache; /* this cache entry will be freed before rendering next frame */ + /* ID of task for assigning temp cache entries to particular task(thread, etc.) */ + eSeqTaskId task_id; + int type; +} SeqCacheKey; struct ImBuf *seq_cache_get(const struct SeqRenderData *context, struct Sequence *seq, @@ -67,6 +81,7 @@ void seq_cache_cleanup_sequence(struct Scene *scene, bool force_seq_changed_range); void seq_cache_thumbnail_cleanup(Scene *scene, rctf *view_area); bool seq_cache_is_full(void); +float seq_cache_frame_index_to_timeline_frame(struct Sequence *seq, float frame_index); #ifdef __cplusplus } |