Blender V5.0
IMB_moviecache.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2024 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include "BLI_ghash.h"
12
13/* Cache system for movie data - now supports storing ImBufs only
14 * Supposed to provide unified cache system for movie clips, sequencer and
15 * other movie-related areas */
16
17struct ImBuf;
18struct MovieCache;
19
20using MovieCacheGetKeyDataFP = void (*)(void *userkey,
21 int *framenr,
22 int *proxy,
23 int *render_flags);
24
25using MovieCacheGetPriorityDataFP = void *(*)(void *userkey);
26using MovieCacheGetItemPriorityFP = int (*)(void *last_userkey, void *priority_data);
27using MovieCachePriorityDeleterFP = void (*)(void *priority_data);
28
31
33 int keysize,
41
42void IMB_moviecache_put(MovieCache *cache, void *userkey, ImBuf *ibuf);
43bool IMB_moviecache_put_if_possible(MovieCache *cache, void *userkey, ImBuf *ibuf);
44ImBuf *IMB_moviecache_get(MovieCache *cache, void *userkey, bool *r_is_cached_empty);
45void IMB_moviecache_remove(MovieCache *cache, void *userkey);
46bool IMB_moviecache_has_frame(MovieCache *cache, void *userkey);
48
50 bool(cleanup_check_cb)(ImBuf *ibuf, void *userkey, void *userdata),
51 void *userdata);
52
57 MovieCache *cache, int proxy, int render_flags, int *r_totseg, int **r_points);
58
59struct MovieCacheIter;
60MovieCacheIter *IMB_moviecacheIter_new(MovieCache *cache);
61void IMB_moviecacheIter_free(MovieCacheIter *iter);
62bool IMB_moviecacheIter_done(MovieCacheIter *iter);
63void IMB_moviecacheIter_step(MovieCacheIter *iter);
64ImBuf *IMB_moviecacheIter_getImBuf(MovieCacheIter *iter);
65void *IMB_moviecacheIter_getUserKey(MovieCacheIter *iter);
bool(* GHashCmpFP)(const void *a, const void *b)
Definition BLI_ghash.h:33
unsigned int(* GHashHashFP)(const void *key)
Definition BLI_ghash.h:31
bool IMB_moviecache_put_if_possible(MovieCache *cache, void *userkey, ImBuf *ibuf)
MovieCacheIter * IMB_moviecacheIter_new(MovieCache *cache)
void * IMB_moviecacheIter_getUserKey(MovieCacheIter *iter)
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)
int(*)(void *last_userkey, void *priority_data) MovieCacheGetItemPriorityFP
void(*)(void *userkey, int *framenr, int *proxy, int *render_flags) MovieCacheGetKeyDataFP
ImBuf * IMB_moviecache_get(MovieCache *cache, void *userkey, bool *r_is_cached_empty)
void *(*)(void *userkey) MovieCacheGetPriorityDataFP
void IMB_moviecacheIter_free(MovieCacheIter *iter)
bool IMB_moviecacheIter_done(MovieCacheIter *iter)
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_moviecacheIter_step(MovieCacheIter *iter)
void IMB_moviecache_destruct()
void(*)(void *priority_data) MovieCachePriorityDeleterFP
void IMB_moviecache_init()
ImBuf * IMB_moviecacheIter_getImBuf(MovieCacheIter *iter)
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_moviecache_remove(MovieCache *cache, void *userkey)
const char * name
MovieCacheGetKeyDataFP getdatafp
Definition moviecache.cc:51
GHashHashFP hashfp
Definition moviecache.cc:49
void * last_userkey
Definition moviecache.cc:63
MovieCacheGetItemPriorityFP getitempriorityfp
Definition moviecache.cc:54
MovieCachePriorityDeleterFP prioritydeleterfp
Definition moviecache.cc:55
int render_flags
Definition moviecache.cc:65
GHashCmpFP cmpfp
Definition moviecache.cc:50
MovieCacheGetPriorityDataFP getprioritydatafp
Definition moviecache.cc:53