|
Blender
V2.93
|
#include <memory.h>#include <stdlib.h>#include "MEM_CacheLimiterC-Api.h"#include "MEM_guardedalloc.h"#include "BLI_ghash.h"#include "BLI_mempool.h"#include "BLI_string.h"#include "BLI_threads.h"#include "BLI_utildefines.h"#include "IMB_moviecache.h"#include "IMB_imbuf.h"#include "IMB_imbuf_types.h"Go to the source code of this file.
Classes | |
| struct | MovieCache |
| struct | MovieCacheKey |
| struct | MovieCacheItem |
Macros | |
| #define | PRINT(format, ...) |
Typedefs | |
| typedef struct MovieCache | MovieCache |
| typedef struct MovieCacheKey | MovieCacheKey |
| typedef struct MovieCacheItem | MovieCacheItem |
Functions | |
| static unsigned int | moviecache_hashhash (const void *keyv) |
| static bool | moviecache_hashcmp (const void *av, const void *bv) |
| static void | moviecache_keyfree (void *val) |
| static void | moviecache_valfree (void *val) |
| static void | check_unused_keys (MovieCache *cache) |
| static int | compare_int (const void *av, const void *bv) |
| static void | IMB_moviecache_destructor (void *p) |
| static size_t | get_size_in_memory (ImBuf *ibuf) |
| static size_t | get_item_size (void *p) |
| static int | get_item_priority (void *item_v, int default_priority) |
| static bool | get_item_destroyable (void *item_v) |
| void | IMB_moviecache_init (void) |
| void | IMB_moviecache_destruct (void) |
| MovieCache * | IMB_moviecache_create (const char *name, int keysize, GHashHashFP hashfp, GHashCmpFP cmpfp) |
| void | IMB_moviecache_set_getdata_callback (MovieCache *cache, MovieCacheGetKeyDataFP getdatafp) |
| void | IMB_moviecache_set_priority_callback (struct MovieCache *cache, MovieCacheGetPriorityDataFP getprioritydatafp, MovieCacheGetItemPriorityFP getitempriorityfp, MovieCachePriorityDeleterFP prioritydeleterfp) |
| static void | do_moviecache_put (MovieCache *cache, void *userkey, ImBuf *ibuf, bool need_lock) |
| void | IMB_moviecache_put (MovieCache *cache, void *userkey, ImBuf *ibuf) |
| bool | IMB_moviecache_put_if_possible (MovieCache *cache, void *userkey, ImBuf *ibuf) |
| void | IMB_moviecache_remove (MovieCache *cache, void *userkey) |
| ImBuf * | IMB_moviecache_get (MovieCache *cache, void *userkey) |
| bool | IMB_moviecache_has_frame (MovieCache *cache, void *userkey) |
| void | IMB_moviecache_free (MovieCache *cache) |
| void | IMB_moviecache_cleanup (MovieCache *cache, bool(cleanup_check_cb)(ImBuf *ibuf, void *userkey, void *userdata), void *userdata) |
| void | IMB_moviecache_get_cache_segments (MovieCache *cache, int proxy, int render_flags, int *r_totseg, int **r_points) |
| struct MovieCacheIter * | IMB_moviecacheIter_new (MovieCache *cache) |
| void | IMB_moviecacheIter_free (struct MovieCacheIter *iter) |
| bool | IMB_moviecacheIter_done (struct MovieCacheIter *iter) |
| void | IMB_moviecacheIter_step (struct MovieCacheIter *iter) |
| ImBuf * | IMB_moviecacheIter_getImBuf (struct MovieCacheIter *iter) |
| void * | IMB_moviecacheIter_getUserKey (struct MovieCacheIter *iter) |
Variables | |
| static MEM_CacheLimiterC * | limitor = NULL |
| static pthread_mutex_t | limitor_lock = BLI_MUTEX_INITIALIZER |
| #define PRINT | ( | format, | |
| ... | |||
| ) |
Definition at line 50 of file moviecache.c.
| typedef struct MovieCache MovieCache |
| typedef struct MovieCacheItem MovieCacheItem |
| typedef struct MovieCacheKey MovieCacheKey |
|
static |
Definition at line 135 of file moviecache.c.
References BLI_ghash_remove(), BLI_ghashIterator_done(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), BLI_ghashIterator_init(), BLI_ghashIterator_step(), MovieCache::hash, MovieCacheItem::ibuf, moviecache_keyfree(), moviecache_valfree(), MovieCache::name, and PRINT.
Referenced by do_moviecache_put(), IMB_moviecache_cleanup(), and IMB_moviecacheIter_new().
|
static |
Definition at line 160 of file moviecache.c.
References Freestyle::a.
Referenced by IMB_moviecache_get_cache_segments().
|
static |
Definition at line 306 of file moviecache.c.
References BLI_ghash_reinsert(), BLI_mempool_alloc(), BLI_mutex_lock(), BLI_mutex_unlock(), MovieCacheItem::c_handle, MovieCacheKey::cache_owner, MovieCacheItem::cache_owner, check_unused_keys(), MovieCache::getprioritydatafp, MovieCache::hash, MovieCacheItem::ibuf, IMB_moviecache_init(), IMB_refImBuf(), MovieCache::items_pool, MovieCache::keys_pool, MovieCache::keysize, MovieCache::last_userkey, limitor, limitor_lock, MEM_CacheLimiter_enforce_limits(), MEM_CacheLimiter_insert(), MEM_CacheLimiter_ref(), MEM_CacheLimiter_unref(), MEM_freeN, moviecache_keyfree(), moviecache_valfree(), MovieCache::name, NULL, MovieCache::points, PRINT, MovieCacheItem::priority_data, MovieCacheKey::userkey, and MovieCache::userkeys_pool.
Referenced by IMB_moviecache_put(), and IMB_moviecache_put_if_possible().
|
static |
Definition at line 233 of file moviecache.c.
References IB_BITMAPDIRTY, IB_PERSISTENT, MovieCacheItem::ibuf, and ImBuf::userflags.
Referenced by IMB_moviecache_init().
|
static |
Definition at line 210 of file moviecache.c.
References MovieCacheItem::cache_owner, MovieCache::getitempriorityfp, MovieCache::last_userkey, MovieCache::name, PRINT, and MovieCacheItem::priority_data.
Referenced by IMB_moviecache_init().
|
static |
Definition at line 198 of file moviecache.c.
References get_size_in_memory(), MovieCacheItem::ibuf, and size().
Referenced by IMB_moviecache_init().
|
static |
Definition at line 189 of file moviecache.c.
References IB_PERSISTENT, IMB_get_size_in_memory(), and ImBuf::userflags.
Referenced by get_item_size(), and IMB_moviecache_put_if_possible().
| void IMB_moviecache_cleanup | ( | MovieCache * | cache, |
| bool(cleanup_check_cb)(ImBuf *ibuf, void *userkey, void *userdata) | , | ||
| void * | userdata | ||
| ) |
Definition at line 455 of file moviecache.c.
References BLI_ghash_remove(), BLI_ghashIterator_done(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), BLI_ghashIterator_init(), BLI_ghashIterator_step(), check_unused_keys(), MovieCache::hash, MovieCacheItem::ibuf, moviecache_keyfree(), moviecache_valfree(), MovieCache::name, PRINT, and MovieCacheKey::userkey.
| MovieCache* IMB_moviecache_create | ( | const char * | name, |
| int | keysize, | ||
| GHashHashFP | hashfp, | ||
| GHashCmpFP | cmpfp | ||
| ) |
Definition at line 262 of file moviecache.c.
References BLI_ghash_new(), BLI_mempool_create(), BLI_MEMPOOL_NOP, BLI_strncpy(), MovieCache::cmpfp, MovieCache::hash, MovieCache::hashfp, MovieCache::items_pool, MovieCache::keys_pool, MovieCache::keysize, MEM_callocN, moviecache_hashcmp(), moviecache_hashhash(), MovieCache::name, PRINT, MovieCache::proxy, and MovieCache::userkeys_pool.
Referenced by colormanage_moviecache_ensure(), imagecache_put(), and put_imbuf_cache().
| void IMB_moviecache_destruct | ( | void | ) |
Definition at line 255 of file moviecache.c.
References delete_MEM_CacheLimiter(), and limitor.
Referenced by BKE_blender_free().
|
static |
Definition at line 167 of file moviecache.c.
References MovieCacheItem::c_handle, MovieCacheItem::cache_owner, MovieCacheItem::ibuf, IMB_freeImBuf(), MEM_freeN, MovieCache::name, NULL, MovieCache::points, and PRINT.
Referenced by IMB_moviecache_init().
| void IMB_moviecache_free | ( | MovieCache * | cache | ) |
Definition at line 434 of file moviecache.c.
References BLI_ghash_free(), BLI_mempool_destroy(), MovieCache::hash, MovieCache::items_pool, MovieCache::keys_pool, MovieCache::last_userkey, MEM_freeN, moviecache_keyfree(), moviecache_valfree(), MovieCache::name, MovieCache::points, PRINT, and MovieCache::userkeys_pool.
Referenced by colormanage_cache_free(), free_buffers(), and image_free_cached_frames().
| ImBuf* IMB_moviecache_get | ( | MovieCache * | cache, |
| void * | userkey | ||
| ) |
Definition at line 398 of file moviecache.c.
References BLI_ghash_lookup(), BLI_mutex_lock(), BLI_mutex_unlock(), MovieCacheItem::c_handle, MovieCacheKey::cache_owner, MovieCache::hash, MovieCacheItem::ibuf, IMB_refImBuf(), limitor_lock, MEM_CacheLimiter_touch(), NULL, and MovieCacheKey::userkey.
Referenced by colormanage_cache_get_ibuf(), get_imbuf_cache(), and imagecache_get().
| void IMB_moviecache_get_cache_segments | ( | MovieCache * | cache, |
| int | proxy, | ||
| int | render_flags, | ||
| int * | r_totseg, | ||
| int ** | r_points | ||
| ) |
Definition at line 480 of file moviecache.c.
References Freestyle::a, BLI_ghash_len(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), compare_int(), MovieCache::getdatafp, GHASH_ITER, MovieCache::hash, MovieCacheItem::ibuf, MEM_callocN, MEM_freeN, NULL, MovieCache::points, MovieCache::proxy, MovieCache::render_flags, MovieCache::totseg, and MovieCacheKey::userkey.
Referenced by BKE_movieclip_get_cache_segments(), and draw_image_cache().
| bool IMB_moviecache_has_frame | ( | MovieCache * | cache, |
| void * | userkey | ||
| ) |
Definition at line 422 of file moviecache.c.
References BLI_ghash_lookup(), MovieCacheKey::cache_owner, MovieCache::hash, NULL, and MovieCacheKey::userkey.
Referenced by has_imbuf_cache().
| void IMB_moviecache_init | ( | void | ) |
Definition at line 247 of file moviecache.c.
References get_item_destroyable(), get_item_priority(), get_item_size(), IMB_moviecache_destructor(), limitor, MEM_CacheLimiter_ItemDestroyable_Func_set(), MEM_CacheLimiter_ItemPriority_Func_set(), and new_MEM_CacheLimiter().
Referenced by do_moviecache_put().
| void IMB_moviecache_put | ( | MovieCache * | cache, |
| void * | userkey, | ||
| ImBuf * | ibuf | ||
| ) |
Definition at line 364 of file moviecache.c.
References do_moviecache_put().
Referenced by colormanage_cache_put(), imagecache_put(), and put_imbuf_cache().
| bool IMB_moviecache_put_if_possible | ( | MovieCache * | cache, |
| void * | userkey, | ||
| ImBuf * | ibuf | ||
| ) |
Definition at line 369 of file moviecache.c.
References BLI_mutex_lock(), BLI_mutex_unlock(), do_moviecache_put(), get_size_in_memory(), limitor, limitor_lock, MEM_CacheLimiter_get_maximum(), MEM_CacheLimiter_get_memory_in_use(), mem_in_use, and result.
Referenced by put_imbuf_cache().
| void IMB_moviecache_remove | ( | MovieCache * | cache, |
| void * | userkey | ||
| ) |
Definition at line 390 of file moviecache.c.
References BLI_ghash_remove(), MovieCacheKey::cache_owner, MovieCache::hash, moviecache_keyfree(), moviecache_valfree(), and MovieCacheKey::userkey.
Referenced by imagecache_remove().
| void IMB_moviecache_set_getdata_callback | ( | MovieCache * | cache, |
| MovieCacheGetKeyDataFP | getdatafp | ||
| ) |
Definition at line 289 of file moviecache.c.
References MovieCache::getdatafp.
Referenced by imagecache_put(), and put_imbuf_cache().
| void IMB_moviecache_set_priority_callback | ( | struct MovieCache * | cache, |
| MovieCacheGetPriorityDataFP | getprioritydatafp, | ||
| MovieCacheGetItemPriorityFP | getitempriorityfp, | ||
| MovieCachePriorityDeleterFP | prioritydeleterfp | ||
| ) |
Definition at line 294 of file moviecache.c.
References MovieCache::getitempriorityfp, MovieCache::getprioritydatafp, MovieCache::keysize, MovieCache::last_userkey, MEM_mallocN, and MovieCache::prioritydeleterfp.
Referenced by put_imbuf_cache().
| bool IMB_moviecacheIter_done | ( | struct MovieCacheIter * | iter | ) |
Definition at line 585 of file moviecache.c.
References BLI_ghashIterator_done().
Referenced by BKE_image_file_format_set(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), image_mem_size(), and image_save_sequence_exec().
| void IMB_moviecacheIter_free | ( | struct MovieCacheIter * | iter | ) |
Definition at line 580 of file moviecache.c.
References BLI_ghashIterator_free().
Referenced by BKE_image_file_format_set(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), image_mem_size(), and image_save_sequence_exec().
| ImBuf* IMB_moviecacheIter_getImBuf | ( | struct MovieCacheIter * | iter | ) |
Definition at line 595 of file moviecache.c.
References BLI_ghashIterator_getValue(), and MovieCacheItem::ibuf.
Referenced by BKE_image_file_format_set(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_is_dirty_writable(), BKE_image_merge(), image_mem_size(), and image_save_sequence_exec().
| void* IMB_moviecacheIter_getUserKey | ( | struct MovieCacheIter * | iter | ) |
Definition at line 601 of file moviecache.c.
References BLI_ghashIterator_getKey(), and MovieCacheKey::userkey.
Referenced by BKE_image_merge().
| struct MovieCacheIter* IMB_moviecacheIter_new | ( | MovieCache * | cache | ) |
Definition at line 570 of file moviecache.c.
References BLI_ghashIterator_new(), check_unused_keys(), and MovieCache::hash.
Referenced by BKE_image_file_format_set(), BKE_image_get_first_ibuf(), BKE_image_get_ibuf_with_name(), BKE_image_has_loaded_ibuf(), BKE_image_is_dirty_writable(), BKE_image_merge(), image_mem_size(), and image_save_sequence_exec().
| void IMB_moviecacheIter_step | ( | struct MovieCacheIter * | iter | ) |
Definition at line 590 of file moviecache.c.
References BLI_ghashIterator_step().
Referenced by BKE_image_file_format_set(), BKE_image_get_ibuf_with_name(), BKE_image_is_dirty_writable(), BKE_image_merge(), image_mem_size(), and image_save_sequence_exec().
|
static |
Definition at line 99 of file moviecache.c.
References Freestyle::a, and MovieCacheKey::userkey.
Referenced by IMB_moviecache_create().
|
static |
Definition at line 92 of file moviecache.c.
References MovieCacheKey::cache_owner, MovieCache::hashfp, and MovieCacheKey::userkey.
Referenced by IMB_moviecache_create().
|
static |
Definition at line 107 of file moviecache.c.
References BLI_mempool_free(), MovieCacheKey::cache_owner, MovieCache::keys_pool, MovieCacheKey::userkey, and MovieCache::userkeys_pool.
Referenced by check_unused_keys(), do_moviecache_put(), IMB_moviecache_cleanup(), IMB_moviecache_free(), and IMB_moviecache_remove().
|
static |
Definition at line 116 of file moviecache.c.
References BLI_mempool_free(), MovieCacheItem::c_handle, MovieCacheItem::cache_owner, MovieCacheItem::ibuf, IMB_freeImBuf(), MovieCache::items_pool, MEM_CacheLimiter_unmanage(), MovieCache::name, PRINT, MovieCacheItem::priority_data, and MovieCache::prioritydeleterfp.
Referenced by check_unused_keys(), do_moviecache_put(), IMB_moviecache_cleanup(), IMB_moviecache_free(), and IMB_moviecache_remove().
|
static |
Definition at line 53 of file moviecache.c.
Referenced by do_moviecache_put(), IMB_moviecache_destruct(), IMB_moviecache_init(), and IMB_moviecache_put_if_possible().
|
static |
Definition at line 54 of file moviecache.c.
Referenced by do_moviecache_put(), IMB_moviecache_get(), and IMB_moviecache_put_if_possible().