movieclip: Cleanup around cache
Should be no functional changes.
This commit is contained in:
parent
d042962025
commit
5879778c38
@ -88,7 +88,7 @@ static int sequence_guess_offset(const char *full_name, int head_len, unsigned s
|
||||
return atoi(num);
|
||||
}
|
||||
|
||||
static int rendersize_to_proxy(MovieClipUser *user, int flag)
|
||||
static int rendersize_to_proxy(const MovieClipUser *user, int flag)
|
||||
{
|
||||
if ((flag & MCLIP_USE_PROXY) == 0)
|
||||
return IMB_PROXY_NONE;
|
||||
@ -143,7 +143,9 @@ static int get_timecode(MovieClip *clip, int flag)
|
||||
return clip->proxy.tc;
|
||||
}
|
||||
|
||||
static void get_sequence_fname(MovieClip *clip, int framenr, char *name)
|
||||
static void get_sequence_fname(const MovieClip *clip,
|
||||
const int framenr,
|
||||
char *name)
|
||||
{
|
||||
unsigned short numlen;
|
||||
char head[FILE_MAX], tail[FILE_MAX];
|
||||
@ -157,16 +159,25 @@ static void get_sequence_fname(MovieClip *clip, int framenr, char *name)
|
||||
*/
|
||||
offset = sequence_guess_offset(clip->name, strlen(head), numlen);
|
||||
|
||||
if (numlen)
|
||||
BLI_stringenc(name, head, tail, numlen, offset + framenr - clip->start_frame + clip->frame_offset);
|
||||
else
|
||||
if (numlen) {
|
||||
BLI_stringenc(name,
|
||||
head, tail,
|
||||
numlen,
|
||||
offset + framenr - clip->start_frame + clip->frame_offset);
|
||||
}
|
||||
else {
|
||||
BLI_strncpy(name, clip->name, sizeof(clip->name));
|
||||
}
|
||||
|
||||
BLI_path_abs(name, ID_BLEND_PATH(G.main, &clip->id));
|
||||
}
|
||||
|
||||
/* supposed to work with sequences only */
|
||||
static void get_proxy_fname(MovieClip *clip, int proxy_render_size, bool undistorted, int framenr, char *name)
|
||||
static void get_proxy_fname(const MovieClip *clip,
|
||||
int proxy_render_size,
|
||||
bool undistorted,
|
||||
int framenr,
|
||||
char *name)
|
||||
{
|
||||
int size = rendersize_to_number(proxy_render_size);
|
||||
char dir[FILE_MAX], clipdir[FILE_MAX], clipfile[FILE_MAX];
|
||||
@ -192,7 +203,10 @@ static void get_proxy_fname(MovieClip *clip, int proxy_render_size, bool undisto
|
||||
strcat(name, ".jpg");
|
||||
}
|
||||
|
||||
static ImBuf *movieclip_load_sequence_file(MovieClip *clip, MovieClipUser *user, int framenr, int flag)
|
||||
static ImBuf *movieclip_load_sequence_file(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
int framenr,
|
||||
int flag)
|
||||
{
|
||||
struct ImBuf *ibuf;
|
||||
char name[FILE_MAX];
|
||||
@ -261,7 +275,10 @@ static void movieclip_open_anim_file(MovieClip *clip)
|
||||
}
|
||||
}
|
||||
|
||||
static ImBuf *movieclip_load_movie_file(MovieClip *clip, MovieClipUser *user, int framenr, int flag)
|
||||
static ImBuf *movieclip_load_movie_file(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
int framenr,
|
||||
int flag)
|
||||
{
|
||||
ImBuf *ibuf = NULL;
|
||||
int tc = get_timecode(clip, flag);
|
||||
@ -300,7 +317,9 @@ static void movieclip_calc_length(MovieClip *clip)
|
||||
else {
|
||||
clip->len = 0;
|
||||
for (;;) {
|
||||
get_sequence_fname(clip, clip->len + clip->start_frame, name);
|
||||
get_sequence_fname(clip,
|
||||
clip->len + clip->start_frame,
|
||||
name);
|
||||
|
||||
if (BLI_exists(name))
|
||||
clip->len++;
|
||||
@ -439,7 +458,9 @@ static void moviecache_prioritydeleter(void *priority_data_v)
|
||||
MEM_freeN(priority_data);
|
||||
}
|
||||
|
||||
static ImBuf *get_imbuf_cache(MovieClip *clip, MovieClipUser *user, int flag)
|
||||
static ImBuf *get_imbuf_cache(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
int flag)
|
||||
{
|
||||
if (clip->cache) {
|
||||
MovieClipImBufCacheKey key;
|
||||
@ -483,11 +504,15 @@ static bool has_imbuf_cache(MovieClip *clip, MovieClipUser *user, int flag)
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool put_imbuf_cache(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, int flag, bool destructive)
|
||||
static bool put_imbuf_cache(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
ImBuf *ibuf,
|
||||
int flag,
|
||||
bool destructive)
|
||||
{
|
||||
MovieClipImBufCacheKey key;
|
||||
|
||||
if (!clip->cache) {
|
||||
if (clip->cache == NULL) {
|
||||
struct MovieCache *moviecache;
|
||||
|
||||
// char cache_name[64];
|
||||
@ -495,10 +520,15 @@ static bool put_imbuf_cache(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, i
|
||||
|
||||
clip->cache = MEM_callocN(sizeof(MovieClipCache), "movieClipCache");
|
||||
|
||||
moviecache = IMB_moviecache_create("movieclip", sizeof(MovieClipImBufCacheKey), moviecache_hashhash, moviecache_hashcmp);
|
||||
moviecache = IMB_moviecache_create("movieclip",
|
||||
sizeof(MovieClipImBufCacheKey),
|
||||
moviecache_hashhash,
|
||||
moviecache_hashcmp);
|
||||
|
||||
IMB_moviecache_set_getdata_callback(moviecache, moviecache_keydata);
|
||||
IMB_moviecache_set_priority_callback(moviecache, moviecache_getprioritydata, moviecache_getitempriority,
|
||||
IMB_moviecache_set_priority_callback(moviecache,
|
||||
moviecache_getprioritydata,
|
||||
moviecache_getitempriority,
|
||||
moviecache_prioritydeleter);
|
||||
|
||||
clip->cache->moviecache = moviecache;
|
||||
@ -666,7 +696,10 @@ MovieClip *BKE_movieclip_file_add_exists(Main *bmain, const char *filepath)
|
||||
return BKE_movieclip_file_add_exists_ex(bmain, filepath, NULL);
|
||||
}
|
||||
|
||||
static void real_ibuf_size(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, int *width, int *height)
|
||||
static void real_ibuf_size(const MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
const ImBuf *ibuf,
|
||||
int *width, int *height)
|
||||
{
|
||||
*width = ibuf->x;
|
||||
*height = ibuf->y;
|
||||
@ -691,7 +724,9 @@ static void real_ibuf_size(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, in
|
||||
}
|
||||
}
|
||||
|
||||
static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *distortion, ImBuf *ibuf)
|
||||
static ImBuf *get_undistorted_ibuf(MovieClip *clip,
|
||||
struct MovieDistortion *distortion,
|
||||
ImBuf *ibuf)
|
||||
{
|
||||
ImBuf *undistibuf;
|
||||
|
||||
@ -705,7 +740,7 @@ static ImBuf *get_undistorted_ibuf(MovieClip *clip, struct MovieDistortion *dist
|
||||
return undistibuf;
|
||||
}
|
||||
|
||||
static int need_undistortion_postprocess(MovieClipUser *user)
|
||||
static int need_undistortion_postprocess(const MovieClipUser *user)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
@ -716,7 +751,8 @@ static int need_undistortion_postprocess(MovieClipUser *user)
|
||||
return result;
|
||||
}
|
||||
|
||||
static int need_postprocessed_frame(MovieClipUser *user, int postprocess_flag)
|
||||
static int need_postprocessed_frame(const MovieClipUser *user,
|
||||
int postprocess_flag)
|
||||
{
|
||||
int result = postprocess_flag;
|
||||
|
||||
@ -725,10 +761,10 @@ static int need_postprocessed_frame(MovieClipUser *user, int postprocess_flag)
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool check_undistortion_cache_flags(MovieClip *clip)
|
||||
static bool check_undistortion_cache_flags(const MovieClip *clip)
|
||||
{
|
||||
MovieClipCache *cache = clip->cache;
|
||||
MovieTrackingCamera *camera = &clip->tracking.camera;
|
||||
const MovieClipCache *cache = clip->cache;
|
||||
const MovieTrackingCamera *camera = &clip->tracking.camera;
|
||||
|
||||
/* check for distortion model changes */
|
||||
if (!equals_v2v2(camera->principal, cache->postprocessed.principal)) {
|
||||
@ -750,9 +786,12 @@ static bool check_undistortion_cache_flags(MovieClip *clip)
|
||||
return true;
|
||||
}
|
||||
|
||||
static ImBuf *get_postprocessed_cached_frame(MovieClip *clip, MovieClipUser *user, int flag, int postprocess_flag)
|
||||
static ImBuf *get_postprocessed_cached_frame(const MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
int flag,
|
||||
int postprocess_flag)
|
||||
{
|
||||
MovieClipCache *cache = clip->cache;
|
||||
const MovieClipCache *cache = clip->cache;
|
||||
int framenr = user->framenr;
|
||||
short proxy = IMB_PROXY_NONE;
|
||||
int render_flag = 0;
|
||||
@ -789,7 +828,10 @@ static ImBuf *get_postprocessed_cached_frame(MovieClip *clip, MovieClipUser *use
|
||||
return cache->postprocessed.ibuf;
|
||||
}
|
||||
|
||||
static ImBuf *postprocess_frame(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf, int postprocess_flag)
|
||||
static ImBuf *postprocess_frame(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
ImBuf *ibuf,
|
||||
int postprocess_flag)
|
||||
{
|
||||
ImBuf *postproc_ibuf = NULL;
|
||||
|
||||
@ -813,8 +855,11 @@ static ImBuf *postprocess_frame(MovieClip *clip, MovieClipUser *user, ImBuf *ibu
|
||||
return postproc_ibuf;
|
||||
}
|
||||
|
||||
static void put_postprocessed_frame_to_cache(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf,
|
||||
int flag, int postprocess_flag)
|
||||
static void put_postprocessed_frame_to_cache(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
ImBuf *ibuf,
|
||||
int flag,
|
||||
int postprocess_flag)
|
||||
{
|
||||
MovieClipCache *cache = clip->cache;
|
||||
MovieTrackingCamera *camera = &clip->tracking.camera;
|
||||
@ -850,8 +895,11 @@ static void put_postprocessed_frame_to_cache(MovieClip *clip, MovieClipUser *use
|
||||
cache->postprocessed.ibuf = ibuf;
|
||||
}
|
||||
|
||||
static ImBuf *movieclip_get_postprocessed_ibuf(MovieClip *clip, MovieClipUser *user, int flag,
|
||||
int postprocess_flag, int cache_flag)
|
||||
static ImBuf *movieclip_get_postprocessed_ibuf(MovieClip *clip,
|
||||
const MovieClipUser *user,
|
||||
int flag,
|
||||
int postprocess_flag,
|
||||
int cache_flag)
|
||||
{
|
||||
ImBuf *ibuf = NULL;
|
||||
int framenr = user->framenr;
|
||||
@ -880,14 +928,18 @@ static ImBuf *movieclip_get_postprocessed_ibuf(MovieClip *clip, MovieClipUser *u
|
||||
(user->render_size != MCLIP_PROXY_RENDER_SIZE_FULL);
|
||||
|
||||
if (clip->source == MCLIP_SRC_SEQUENCE || use_sequence) {
|
||||
ibuf = movieclip_load_sequence_file(clip, user, framenr, flag);
|
||||
ibuf = movieclip_load_sequence_file(clip,
|
||||
user,
|
||||
framenr,
|
||||
flag);
|
||||
}
|
||||
else {
|
||||
ibuf = movieclip_load_movie_file(clip, user, framenr, flag);
|
||||
}
|
||||
|
||||
if (ibuf && (cache_flag & MOVIECLIP_CACHE_SKIP) == 0)
|
||||
if (ibuf && (cache_flag & MOVIECLIP_CACHE_SKIP) == 0) {
|
||||
put_imbuf_cache(clip, user, ibuf, flag, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (ibuf) {
|
||||
@ -1542,7 +1594,9 @@ bool BKE_movieclip_has_cached_frame(MovieClip *clip, MovieClipUser *user)
|
||||
return has_frame;
|
||||
}
|
||||
|
||||
bool BKE_movieclip_put_frame_if_possible(MovieClip *clip, MovieClipUser *user, ImBuf *ibuf)
|
||||
bool BKE_movieclip_put_frame_if_possible(MovieClip *clip,
|
||||
MovieClipUser *user,
|
||||
ImBuf *ibuf)
|
||||
{
|
||||
bool result;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user