Blender
V3.3
|
#include <cstdlib>
#include <memory.h>
#include <mutex>
#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, ...) |
Variables | |
static MEM_CacheLimiterC * | limitor = nullptr |
static std::recursive_mutex | limitor_lock |
Definition at line 35 of file moviecache.cc.
|
static |
Definition at line 132 of file moviecache.cc.
References MovieCacheItem::added_empty, 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, PRINT, and blender::bke::attribute_accessor_functions::remove().
Referenced by do_moviecache_put(), IMB_moviecache_cleanup(), and IMB_moviecacheIter_new().
Definition at line 162 of file moviecache.cc.
References Freestyle::a, and usdtokens::b().
Referenced by IMB_moviecache_get_cache_segments().
|
static |
Definition at line 309 of file moviecache.cc.
References MovieCacheItem::added_empty, BLI_ghash_reinsert(), BLI_mempool_alloc(), 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_SAFE_FREE, moviecache_keyfree(), moviecache_valfree(), MovieCache::name, MovieCache::points, PRINT, MovieCacheItem::priority_data, MovieCacheKey::userkey, and MovieCache::userkeys_pool.
Referenced by IMB_moviecache_put(), and IMB_moviecache_put_if_possible().
Definition at line 232 of file moviecache.cc.
References IB_BITMAPDIRTY, IB_PERSISTENT, MovieCacheItem::ibuf, and ImBuf::userflags.
Referenced by IMB_moviecache_init().
|
static |
Definition at line 209 of file moviecache.cc.
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 197 of file moviecache.cc.
References get_size_in_memory(), MovieCacheItem::ibuf, and size().
Referenced by IMB_moviecache_init().
|
static |
Definition at line 188 of file moviecache.cc.
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 465 of file moviecache.cc.
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 265 of file moviecache.cc.
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().
Definition at line 257 of file moviecache.cc.
References delete_MEM_CacheLimiter(), and limitor.
Referenced by BKE_blender_free(), and blender::bke::image::partial_update::ImagePartialUpdateTest::TearDown().
void IMB_moviecache_free | ( | MovieCache * | cache | ) |
Definition at line 444 of file moviecache.cc.
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, | ||
bool * | r_is_cached_empty | ||
) |
Definition at line 401 of file moviecache.cc.
References BLI_ghash_lookup(), MovieCacheItem::c_handle, MovieCacheKey::cache_owner, MovieCache::hash, MovieCacheItem::ibuf, IMB_refImBuf(), limitor_lock, MEM_CacheLimiter_touch(), and MovieCacheKey::userkey.
Referenced by colormanage_cache_get_ibuf(), get_imbuf_cache(), and imagecache_get().
void IMB_moviecache_get_cache_segments | ( | struct MovieCache * | cache, |
int | proxy, | ||
int | render_flags, | ||
int * | r_totseg, | ||
int ** | r_points | ||
) |
Get segments of cached frames. Useful for debugging cache policies.
Definition at line 489 of file moviecache.cc.
References Freestyle::a, usdtokens::b(), BLI_ghash_len(), BLI_ghashIterator_getKey(), BLI_ghashIterator_getValue(), compare_int(), MovieCache::getdatafp, GHASH_ITER, MovieCache::hash, MovieCacheItem::ibuf, MEM_callocN, MEM_freeN, MEM_SAFE_FREE, 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 432 of file moviecache.cc.
References BLI_ghash_lookup(), MovieCacheKey::cache_owner, MovieCache::hash, and MovieCacheKey::userkey.
Referenced by has_imbuf_cache().
Definition at line 249 of file moviecache.cc.
References get_item_destroyable(), get_item_priority(), get_item_size(), limitor, MEM_CacheLimiter_ItemDestroyable_Func_set(), MEM_CacheLimiter_ItemPriority_Func_set(), moviecache_destructor(), and new_MEM_CacheLimiter().
Referenced by do_moviecache_put().
void IMB_moviecache_put | ( | MovieCache * | cache, |
void * | userkey, | ||
ImBuf * | ibuf | ||
) |
Definition at line 367 of file moviecache.cc.
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 372 of file moviecache.cc.
References 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 393 of file moviecache.cc.
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 292 of file moviecache.cc.
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 297 of file moviecache.cc.
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 590 of file moviecache.cc.
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 585 of file moviecache.cc.
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 600 of file moviecache.cc.
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_has_loaded_ibuf(), 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 606 of file moviecache.cc.
References BLI_ghashIterator_getKey(), and MovieCacheKey::userkey.
Referenced by BKE_image_merge().
struct MovieCacheIter* IMB_moviecacheIter_new | ( | MovieCache * | cache | ) |
Definition at line 575 of file moviecache.cc.
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 595 of file moviecache.cc.
References BLI_ghashIterator_step().
Referenced by BKE_image_file_format_set(), 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().
Definition at line 169 of file moviecache.cc.
References MovieCacheItem::c_handle, MovieCacheItem::cache_owner, MovieCacheItem::ibuf, IMB_freeImBuf(), MEM_SAFE_FREE, MovieCache::name, MovieCache::points, and PRINT.
Referenced by IMB_moviecache_init().
Definition at line 91 of file moviecache.cc.
References Freestyle::a, and usdtokens::b().
Referenced by IMB_moviecache_create().
|
static |
Definition at line 84 of file moviecache.cc.
References MovieCacheKey::cache_owner, MovieCache::hashfp, and MovieCacheKey::userkey.
Referenced by IMB_moviecache_create().
Definition at line 99 of file moviecache.cc.
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().
Definition at line 108 of file moviecache.cc.
References BLI_mempool_free(), MovieCacheItem::c_handle, MovieCacheItem::cache_owner, MovieCacheItem::ibuf, IMB_freeImBuf(), MovieCache::items_pool, limitor_lock, 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 38 of file moviecache.cc.
Referenced by do_moviecache_put(), IMB_moviecache_destruct(), IMB_moviecache_init(), and IMB_moviecache_put_if_possible().
|
static |
Definition at line 44 of file moviecache.cc.
Referenced by do_moviecache_put(), IMB_moviecache_get(), IMB_moviecache_put_if_possible(), and moviecache_valfree().