[Bf-blender-cvs] [647a4ea] master: Fix T47577: Movie clip uses too much memory with still image sequences

Sergey Sharybin noreply at git.blender.org
Tue Mar 15 11:08:25 CET 2016


Commit: 647a4ea2f7a057159aae29d875e20db2809b563b
Author: Sergey Sharybin
Date:   Tue Mar 15 15:07:18 2016 +0500
Branches: master
https://developer.blender.org/rB647a4ea2f7a057159aae29d875e20db2809b563b

Fix T47577: Movie clip uses too much memory with still image sequences

===================================================================

M	source/blender/blenkernel/intern/movieclip.c

===================================================================

diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 9b9838a..a8d3c60 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -367,6 +367,8 @@ typedef struct MovieClipCache {
 	} stabilized;
 
 	int sequence_offset;
+
+	bool is_still_sequence;
 } MovieClipCache;
 
 typedef struct MovieClipImBufCacheKey {
@@ -465,7 +467,12 @@ static ImBuf *get_imbuf_cache(MovieClip *clip,
 	if (clip->cache) {
 		MovieClipImBufCacheKey key;
 
-		key.framenr = user_frame_to_cache_frame(clip, user->framenr);
+		if (!clip->cache->is_still_sequence) {
+			key.framenr = user_frame_to_cache_frame(clip, user->framenr);
+		}
+		else {
+			key.framenr = 1;
+		}
 
 		if (flag & MCLIP_USE_PROXY) {
 			key.proxy = rendersize_to_proxy(user, flag);
@@ -533,9 +540,19 @@ static bool put_imbuf_cache(MovieClip *clip,
 
 		clip->cache->moviecache = moviecache;
 		clip->cache->sequence_offset = -1;
+		if (clip->source == MCLIP_SRC_SEQUENCE) {
+			unsigned short numlen;
+			BLI_stringdec(clip->name, NULL, NULL, &numlen);
+			clip->cache->is_still_sequence = (numlen == 0);
+		}
 	}
 
-	key.framenr = user_frame_to_cache_frame(clip, user->framenr);
+	if (!clip->cache->is_still_sequence) {
+		key.framenr = user_frame_to_cache_frame(clip, user->framenr);
+	}
+	else {
+		key.framenr = 1;
+	}
 
 	if (flag & MCLIP_USE_PROXY) {
 		key.proxy = rendersize_to_proxy(user, flag);




More information about the Bf-blender-cvs mailing list