|
Blender V4.3
|
#include <cstddef>#include <ctime>#include <memory.h>#include "MEM_guardedalloc.h"#include "DNA_scene_types.h"#include "DNA_sequence_types.h"#include "IMB_colormanagement.hh"#include "IMB_imbuf.hh"#include "IMB_imbuf_types.hh"#include "BLI_blenlib.h"#include "BLI_endian_defines.h"#include "BLI_endian_switch.h"#include "BLI_fileops.h"#include "BLI_fileops_types.h"#include "BLI_listbase.h"#include "BLI_path_utils.hh"#include "BLI_threads.h"#include "BKE_main.hh"#include "SEQ_render.hh"#include "SEQ_time.hh"#include "disk_cache.hh"#include "image_cache.hh"Go to the source code of this file.
Classes | |
| struct | DiskCacheHeaderEntry |
| struct | DiskCacheHeader |
| struct | SeqDiskCache |
| struct | DiskCacheFile |
Macros | |
| #define | DCACHE_FNAME_FORMAT "%d-%dx%d-%d%%(%d)-%d.dcf" |
| #define | DCACHE_IMAGES_PER_FILE 100 |
| #define | DCACHE_CURRENT_VERSION 2 |
| #define | COLORSPACE_NAME_MAX 64 /* XXX: defined in IMB intern. */ |
Variables | |
| static ThreadMutex | cache_create_lock = BLI_MUTEX_INITIALIZER |
| #define COLORSPACE_NAME_MAX 64 /* XXX: defined in IMB intern. */ |
Definition at line 61 of file disk_cache.cc.
| #define DCACHE_CURRENT_VERSION 2 |
Definition at line 60 of file disk_cache.cc.
Referenced by seq_disk_cache_create_version_file(), and seq_disk_cache_handle_versioning().
| #define DCACHE_FNAME_FORMAT "%d-%dx%d-%d%%(%d)-%d.dcf" |
Disk cache uses directory specified in user preferences For each cached non-temp image, image data and supplementary info are written to HDD. Multiple(DCACHE_IMAGES_PER_FILE) images share the same file. Each of these files contains header DiskCacheHeader followed by image data. ZLIB compression with user definable level can be used to compress image data(per image) Images are written in order in which they are rendered. Overwriting of individual entry is not possible. Stored images are deleted by invalidation, or when size of all files exceeds maximum size specified in user preferences. To distinguish 2 blend files with same name, scene->ed->disk_cache_timestamp is used as UID. Blend file can still be copied manually which may cause conflict.
Definition at line 58 of file disk_cache.cc.
Referenced by seq_disk_cache_add_file_to_list(), and seq_disk_cache_get_file_path().
| #define DCACHE_IMAGES_PER_FILE 100 |
Definition at line 59 of file disk_cache.cc.
Referenced by seq_disk_cache_add_file_to_list(), seq_disk_cache_add_header_entry(), seq_disk_cache_get_file_path(), seq_disk_cache_get_header_entry(), seq_disk_cache_invalidate(), and seq_disk_cache_read_header().
|
static |
Definition at line 416 of file disk_cache.cc.
References BLI_file_zstd_from_mem_at_pos(), ImBuf::byte_buffer, ImBufByteBuffer::data, ImBufFloatBuffer::data, ImBuf::float_buffer, DiskCacheHeaderEntry::offset, and DiskCacheHeaderEntry::size_raw.
Referenced by seq_disk_cache_write_file().
|
static |
Definition at line 434 of file disk_cache.cc.
References BLI_file_magic_is_zstd(), BLI_file_unzstd_to_mem_at_pos(), ImBuf::byte_buffer, ImBufByteBuffer::data, ImBufFloatBuffer::data, ImBuf::float_buffer, DiskCacheHeaderEntry::offset, and DiskCacheHeaderEntry::size_raw.
Referenced by seq_disk_cache_read_file().
|
static |
Definition at line 131 of file disk_cache.cc.
References BLI_addtail(), BLI_path_split_dir_file(), DiskCacheFile::cache_type, DCACHE_FNAME_FORMAT, DCACHE_IMAGES_PER_FILE, DiskCacheFile::dir, DiskCacheFile::file, FILE_MAX, FILE_MAXDIR, DiskCacheFile::filepath, SeqDiskCache::files, MEM_callocN, DiskCacheFile::rectx, DiskCacheFile::recty, DiskCacheFile::render_size, DiskCacheFile::start_frame, STRNCPY, and DiskCacheFile::view_id.
Referenced by seq_disk_cache_get_files(), and seq_disk_cache_write_file().
|
static |
Definition at line 481 of file disk_cache.cc.
References B_ENDIAN, ImBuf::byte_buffer, ImBuf::channels, DiskCacheHeaderEntry::colorspace_name, ImBufByteBuffer::data, DCACHE_IMAGES_PER_FILE, DiskCacheHeaderEntry::encoding, ENDIAN_ORDER, DiskCacheHeader::entry, SeqCacheKey::frame_index, DiskCacheHeaderEntry::frameno, IMB_colormanagement_get_float_colorspace(), IMB_colormanagement_get_rect_colorspace(), DiskCacheHeaderEntry::offset, DiskCacheHeaderEntry::size_compressed, DiskCacheHeaderEntry::size_raw, STRNCPY, ImBuf::x, and ImBuf::y.
Referenced by seq_disk_cache_write_file().
|
static |
Definition at line 100 of file disk_cache.cc.
Referenced by seq_disk_cache_create(), seq_disk_cache_enforce_limits(), and seq_disk_cache_get_project_dir().
|
static |
Definition at line 105 of file disk_cache.cc.
References USER_SEQ_DISK_CACHE_COMPRESSION_HIGH, USER_SEQ_DISK_CACHE_COMPRESSION_LOW, and USER_SEQ_DISK_CACHE_COMPRESSION_NONE.
Referenced by seq_disk_cache_write_file().
| SeqDiskCache * seq_disk_cache_create | ( | Main * | bmain, |
| Scene * | scene ) |
Definition at line 667 of file disk_cache.cc.
References BLI_mutex_init(), BLI_mutex_unlock(), SeqDiskCache::bmain, cache_create_lock, MEM_callocN, SeqDiskCache::read_write_mutex, seq_disk_cache_base_dir(), seq_disk_cache_get_files(), seq_disk_cache_handle_versioning(), and SeqDiskCache::timestamp.
Referenced by seq_cache_get(), and seq_cache_put().
|
static |
Definition at line 329 of file disk_cache.cc.
References BLI_file_ensure_parent_dir_exists(), BLI_fopen(), and DCACHE_CURRENT_VERSION.
Referenced by seq_disk_cache_handle_versioning().
|
static |
Definition at line 211 of file disk_cache.cc.
References BLI_delete(), BLI_remlink(), SeqDiskCache::files, MEM_freeN(), and SeqDiskCache::size_total.
Referenced by seq_disk_cache_delete_invalid_files(), seq_disk_cache_enforce_limits(), and seq_disk_cache_write_file().
|
static |
Definition at line 370 of file disk_cache.cc.
References BLI_path_slash_ensure(), DiskCacheFile::cache_type, DiskCacheFile::dir, FILE_MAX, SeqDiskCache::files, ListBase::first, DiskCacheFile::next, seq_cache_frame_index_to_timeline_frame(), seq_disk_cache_delete_file(), seq_disk_cache_get_dir(), DiskCacheFile::start_frame, and STREQ.
Referenced by seq_disk_cache_invalidate().
| bool seq_disk_cache_enforce_limits | ( | SeqDiskCache * | disk_cache | ) |
Definition at line 219 of file disk_cache.cc.
References BLI_exists(), BLI_freelistN(), BLI_mutex_lock(), BLI_mutex_unlock(), DiskCacheFile::filepath, SeqDiskCache::files, SeqDiskCache::read_write_mutex, seq_disk_cache_base_dir(), seq_disk_cache_delete_file(), seq_disk_cache_get_files(), seq_disk_cache_get_oldest_file(), seq_disk_cache_size_limit(), and SeqDiskCache::size_total.
Referenced by seq_cache_put().
| void seq_disk_cache_free | ( | SeqDiskCache * | disk_cache | ) |
Definition at line 680 of file disk_cache.cc.
References BLI_freelistN(), BLI_mutex_end(), SeqDiskCache::files, MEM_freeN(), and SeqDiskCache::read_write_mutex.
Referenced by seq_cache_destruct().
|
static |
Definition at line 293 of file disk_cache.cc.
References BLI_path_join, BLI_path_make_safe_filename(), FILE_MAX, MAX_ID_NAME, Sequence::name, PRId64, seq_disk_cache_get_project_dir(), SEQ_NAME_MAXSTR, SNPRINTF, STRNCPY, and SeqDiskCache::timestamp.
Referenced by seq_disk_cache_delete_invalid_files(), and seq_disk_cache_get_file_path().
|
static |
Definition at line 245 of file disk_cache.cc.
References BLI_strcasecmp(), DiskCacheFile::filepath, SeqDiskCache::files, ListBase::first, and DiskCacheFile::next.
Referenced by seq_disk_cache_update_file(), and seq_disk_cache_write_file().
|
static |
Definition at line 309 of file disk_cache.cc.
References BLI_path_append(), SeqCacheKey::context, DCACHE_FNAME_FORMAT, DCACHE_IMAGES_PER_FILE, FILE_MAXFILE, SeqCacheKey::frame_index, int, SeqRenderData::preview_render_size, SeqRenderData::rectx, SeqRenderData::recty, SeqRenderData::scene, SeqCacheKey::seq, seq_disk_cache_get_dir(), SNPRINTF, SeqCacheKey::type, and SeqRenderData::view_id.
Referenced by seq_disk_cache_read_file(), and seq_disk_cache_write_file().
|
static |
Definition at line 155 of file disk_cache.cc.
References BLI_file_attributes(), BLI_filelist_dir_contents(), BLI_filelist_free(), BLI_is_dir(), BLI_path_extension(), BLI_path_slash_ensure(), BLI_path_split_file_part(), FILE_ATTR_ANY_LINK, FILE_MAX, FILENAME_IS_CURRPAR, DiskCacheFile::fstat, direntry::path, direntry::s, seq_disk_cache_add_file_to_list(), seq_disk_cache_get_files(), SeqDiskCache::size_total, and STRNCPY.
Referenced by seq_disk_cache_create(), seq_disk_cache_enforce_limits(), and seq_disk_cache_get_files().
|
static |
Definition at line 533 of file disk_cache.cc.
References DCACHE_IMAGES_PER_FILE, DiskCacheHeader::entry, SeqCacheKey::frame_index, and DiskCacheHeaderEntry::frameno.
Referenced by seq_disk_cache_read_file().
|
static |
Definition at line 196 of file disk_cache.cc.
References SeqDiskCache::files, ListBase::first, DiskCacheFile::fstat, and DiskCacheFile::next.
Referenced by seq_disk_cache_enforce_limits().
|
static |
Definition at line 282 of file disk_cache.cc.
References BKE_main_blendfile_path(), BLI_path_basename(), BLI_path_join, SeqDiskCache::bmain, FILE_MAX, seq_disk_cache_base_dir(), and SNPRINTF.
Referenced by seq_disk_cache_get_dir(), and seq_disk_cache_handle_versioning().
|
static |
Definition at line 340 of file disk_cache.cc.
References BLI_delete(), BLI_exists(), BLI_fopen(), BLI_is_dir(), BLI_path_join, DCACHE_CURRENT_VERSION, FILE_MAX, seq_disk_cache_create_version_file(), and seq_disk_cache_get_project_dir().
Referenced by seq_disk_cache_create().
| void seq_disk_cache_invalidate | ( | SeqDiskCache * | disk_cache, |
| Scene * | scene, | ||
| Sequence * | seq, | ||
| Sequence * | seq_changed, | ||
| int | invalidate_types ) |
Definition at line 397 of file disk_cache.cc.
References BLI_mutex_lock(), BLI_mutex_unlock(), DCACHE_IMAGES_PER_FILE, SeqDiskCache::read_write_mutex, seq_disk_cache_delete_invalid_files(), SEQ_time_left_handle_frame_get(), and SEQ_time_right_handle_frame_get().
Referenced by seq_cache_cleanup_sequence().
| bool seq_disk_cache_is_enabled | ( | Main * | bmain | ) |
Definition at line 124 of file disk_cache.cc.
References Main::filepath, and SEQ_CACHE_DISK_CACHE_ENABLE.
Referenced by seq_cache_cleanup_sequence(), seq_cache_get(), and seq_cache_put().
| ImBuf * seq_disk_cache_read_file | ( | SeqDiskCache * | disk_cache, |
| SeqCacheKey * | key ) |
Definition at line 597 of file disk_cache.cc.
References BLI_file_ensure_parent_dir_exists(), BLI_file_touch(), BLI_fopen(), BLI_mutex_lock(), BLI_mutex_unlock(), DiskCacheHeaderEntry::colorspace_name, SeqCacheKey::context, DiskCacheHeader::entry, FILE_MAX, IB_rect, IB_rectfloat, IB_uninitialized_pixels, IMB_allocImBuf(), IMB_colormanagement_assign_byte_colorspace(), IMB_colormanagement_assign_float_colorspace(), IMB_freeImBuf(), inflate_file_to_imbuf(), SeqDiskCache::read_write_mutex, SeqRenderData::rectx, SeqRenderData::recty, seq_disk_cache_get_file_path(), seq_disk_cache_get_header_entry(), seq_disk_cache_read_header(), seq_disk_cache_update_file(), and DiskCacheHeaderEntry::size_raw.
Referenced by seq_cache_get().
|
static |
Definition at line 453 of file disk_cache.cc.
References B_ENDIAN, BLI_assert_msg, BLI_endian_switch_uint64(), BLI_fseek(), DCACHE_IMAGES_PER_FILE, DiskCacheHeaderEntry::encoding, ENDIAN_ORDER, DiskCacheHeader::entry, DiskCacheHeaderEntry::frameno, LL, DiskCacheHeaderEntry::offset, DiskCacheHeaderEntry::size_compressed, and DiskCacheHeaderEntry::size_raw.
Referenced by seq_disk_cache_read_file(), and seq_disk_cache_write_file().
|
static |
Definition at line 119 of file disk_cache.cc.
Referenced by seq_disk_cache_enforce_limits().
|
static |
Definition at line 260 of file disk_cache.cc.
References BLI_assert, BLI_stat(), DiskCacheFile::fstat, seq_disk_cache_get_file_entry_by_path(), and SeqDiskCache::size_total.
Referenced by seq_disk_cache_read_file(), and seq_disk_cache_write_file().
| bool seq_disk_cache_write_file | ( | SeqDiskCache * | disk_cache, |
| SeqCacheKey * | key, | ||
| ImBuf * | ibuf ) |
Definition at line 544 of file disk_cache.cc.
References BLI_file_ensure_parent_dir_exists(), BLI_fopen(), BLI_mutex_lock(), BLI_mutex_unlock(), deflate_imbuf_to_file(), DiskCacheHeader::entry, FILE_MAX, DiskCacheFile::fstat, SeqDiskCache::read_write_mutex, seq_disk_cache_add_file_to_list(), seq_disk_cache_add_header_entry(), seq_disk_cache_compression_level(), seq_disk_cache_delete_file(), seq_disk_cache_get_file_entry_by_path(), seq_disk_cache_get_file_path(), seq_disk_cache_read_header(), seq_disk_cache_update_file(), seq_disk_cache_write_header(), and DiskCacheHeaderEntry::size_compressed.
Referenced by seq_cache_put().
|
static |
Definition at line 475 of file disk_cache.cc.
References BLI_fseek(), and LL.
Referenced by seq_disk_cache_write_file().
|
static |
Definition at line 98 of file disk_cache.cc.
Referenced by seq_disk_cache_create().