Blender V4.3
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
11#include "BLI_ghash.h"
12#include "BLI_utildefines.h"
13
14/* Cache system for movie data - now supports storing ImBufs only
15 * Supposed to provide unified cache system for movie clips, sequencer and
16 * other movie-related areas */
17
18struct ImBuf;
19struct MovieCache;
20
21using MovieCacheGetKeyDataFP = void (*)(void *userkey,
22 int *framenr,
23 int *proxy,
24 int *render_flags);
25
26using MovieCacheGetPriorityDataFP = void *(*)(void *userkey);
27using MovieCacheGetItemPriorityFP = int (*)(void *last_userkey, void *priority_data);
28using MovieCachePriorityDeleterFP = void (*)(void *priority_data);
29
32
33MovieCache *IMB_moviecache_create(const char *name,
34 int keysize,
42
43void IMB_moviecache_put(MovieCache *cache, void *userkey, ImBuf *ibuf);
44bool IMB_moviecache_put_if_possible(MovieCache *cache, void *userkey, ImBuf *ibuf);
45ImBuf *IMB_moviecache_get(MovieCache *cache, void *userkey, bool *r_is_cached_empty);
46void IMB_moviecache_remove(MovieCache *cache, void *userkey);
47bool IMB_moviecache_has_frame(MovieCache *cache, void *userkey);
49
51 bool(cleanup_check_cb)(ImBuf *ibuf, void *userkey, void *userdata),
52 void *userdata);
53
58 MovieCache *cache, int proxy, int render_flags, int *r_totseg, int **r_points);
59
60struct MovieCacheIter;
61MovieCacheIter *IMB_moviecacheIter_new(MovieCache *cache);
62void IMB_moviecacheIter_free(MovieCacheIter *iter);
63bool IMB_moviecacheIter_done(MovieCacheIter *iter);
64void IMB_moviecacheIter_step(MovieCacheIter *iter);
65ImBuf *IMB_moviecacheIter_getImBuf(MovieCacheIter *iter);
66void *IMB_moviecacheIter_getUserKey(MovieCacheIter *iter);
bool(* GHashCmpFP)(const void *a, const void *b)
Definition BLI_ghash.h:37
unsigned int(* GHashHashFP)(const void *key)
Definition BLI_ghash.h:35
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)
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
MovieCacheGetKeyDataFP getdatafp
Definition moviecache.cc:52
GHashHashFP hashfp
Definition moviecache.cc:50
void * last_userkey
Definition moviecache.cc:64
MovieCacheGetItemPriorityFP getitempriorityfp
Definition moviecache.cc:55
MovieCachePriorityDeleterFP prioritydeleterfp
Definition moviecache.cc:56
int render_flags
Definition moviecache.cc:66
GHashCmpFP cmpfp
Definition moviecache.cc:51
MovieCacheGetPriorityDataFP getprioritydatafp
Definition moviecache.cc:54