[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20881] trunk/blender/source/blender: == Sequencer ==

Peter Schlaile peter at schlaile.de
Sun Jun 14 20:54:36 CEST 2009


Revision: 20881
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20881
Author:   schlaile
Date:     2009-06-14 20:54:35 +0200 (Sun, 14 Jun 2009)

Log Message:
-----------
== Sequencer ==

Big proxy fix (addressing hopefully most complaints on mailing list and 
in tracker)
* proxy render settings are now independent of render size settings.
  That means: which proxy size is used, is controlled by two parameters
  now: the proxy size of the files, can be controlled with additional
  buttons within the proxy panels. What is shown in a specific preview
  window depends on the header settings of the preview panel.
  So: proxies are _only_ used in those windows, that are switched to a
  specific proxy resolution.
* output rendering is always done _without_ proxies.
* proxy generation now shows a waitcursor with numbers.
  (closing Bug: [#18909] Building Proxies doesn't give any feedback
  which was rather a feature request, since the problem mentioned there
  was always the case :) )

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_sequence_types.h
    trunk/blender/source/blender/src/buttons_scene.c
    trunk/blender/source/blender/src/drawseq.c
    trunk/blender/source/blender/src/header_seq.c
    trunk/blender/source/blender/src/sequence.c

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2009-06-14 18:16:38 UTC (rev 20880)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2009-06-14 18:54:35 UTC (rev 20881)
@@ -41,7 +41,7 @@
 struct MemFile;
 
 #define BLENDER_VERSION			249
-#define BLENDER_SUBVERSION		1
+#define BLENDER_SUBVERSION		2
 
 #define BLENDER_MINVERSION		245
 #define BLENDER_MINSUBVERSION	15

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2009-06-14 18:16:38 UTC (rev 20880)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2009-06-14 18:54:35 UTC (rev 20881)
@@ -8156,7 +8156,35 @@
 	
 	}
 	
+	if (main->versionfile < 249 && main->subversionfile < 2) {
+		Scene *sce= main->scene.first;
+		Sequence *seq;
+		Editing *ed;
+		
+		while(sce) {
+			ed= sce->ed;
+			if(ed) {
+				WHILE_SEQ(&ed->seqbase) {
+					if (seq->strip && seq->strip->proxy){
+						if (G.scene->r.size != 100.0) {
+							seq->strip->proxy->size
+								= sce->r.size;
+						} else {
+							seq->strip->proxy->size
+								= 25.0;
+						}
+						seq->strip->proxy->quality =90;
+					}
+				}
+				END_SEQ
+			}
+			
+			sce= sce->id.next;
+		}
 
+	}
+
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
 

Modified: trunk/blender/source/blender/makesdna/DNA_sequence_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sequence_types.h	2009-06-14 18:16:38 UTC (rev 20880)
+++ trunk/blender/source/blender/makesdna/DNA_sequence_types.h	2009-06-14 18:54:35 UTC (rev 20881)
@@ -80,6 +80,9 @@
 	char dir[160];
 	char file[80];
 	struct anim *anim;
+	short size;
+	short quality;
+	int pad;
 } StripProxy;
 
 typedef struct Strip {

Modified: trunk/blender/source/blender/src/buttons_scene.c
===================================================================
--- trunk/blender/source/blender/src/buttons_scene.c	2009-06-14 18:16:38 UTC (rev 20880)
+++ trunk/blender/source/blender/src/buttons_scene.c	2009-06-14 18:54:35 UTC (rev 20881)
@@ -1164,6 +1164,8 @@
 {
 	Sequence *last_seq = get_last_seq();
 	uiBlock *block;
+	int yofs;
+
 	block = uiNewBlock(&curarea->uiblocks, "seq_panel_proxy", 
 			   UI_EMBOSS, UI_HELV, curarea->win);
 
@@ -1172,83 +1174,118 @@
 
 	uiBlockBeginAlign(block);
 
+	yofs = 140;
+
 	uiDefButBitI(block, TOG, SEQ_USE_PROXY, 
 		     B_SEQ_BUT_RELOAD, "Use Proxy", 
-		     10,140,80,19, &last_seq->flag, 
+		     10,yofs,80,19, &last_seq->flag, 
 		     0.0, 21.0, 100, 0, 
 		     "Use a preview proxy for this strip");
 
-	if (last_seq->flag & SEQ_USE_PROXY) {
-		if (!last_seq->strip->proxy) {
-			last_seq->strip->proxy = 
-				MEM_callocN(sizeof(struct StripProxy),
-					    "StripProxy");
-		}
+	if (!(last_seq->flag & SEQ_USE_PROXY)) {
+		uiBlockEndAlign(block);
+		return;
+	}
 
-		uiDefButBitI(block, TOG, SEQ_USE_PROXY_CUSTOM_DIR, 
-			     B_SEQ_BUT_RELOAD, "Custom Dir", 
-			     90,140,80,19, &last_seq->flag, 
-			     0.0, 21.0, 100, 0, 
-			     "Use a custom directory to store data");
+	if (!last_seq->strip->proxy) {
+		last_seq->strip->proxy = 
+			MEM_callocN(sizeof(struct StripProxy),
+				    "StripProxy");
+	}
 
-		uiDefButBitI(block, TOG, SEQ_USE_PROXY_CUSTOM_FILE, 
-			     B_SEQ_BUT_RELOAD, "Custom File", 
-			     170,140,80,19, &last_seq->flag, 
-			     0.0, 21.0, 100, 0, 
-			     "Use a custom file to load data from");
+	uiDefButBitI(block, TOG, SEQ_USE_PROXY_CUSTOM_DIR, 
+		     B_SEQ_BUT_RELOAD, "Custom Dir", 
+		     90,yofs,80,19, &last_seq->flag, 
+		     0.0, 21.0, 100, 0, 
+		     "Use a custom directory to store data");
 
-		if (last_seq->flag & SEQ_USE_PROXY_CUSTOM_DIR) {
-			uiDefIconBut(block, BUT, B_SEQ_SEL_PROXY_DIR, 
-				     ICON_FILESEL, 10, 120, 20, 20, 0, 0, 0, 0, 0, 
-				     "Select the directory/name for "
-				     "the proxy storage");
+	uiDefButBitI(block, TOG, SEQ_USE_PROXY_CUSTOM_FILE, 
+		     B_SEQ_BUT_RELOAD, "Custom File", 
+		     170,yofs,80,19, &last_seq->flag, 
+		     0.0, 21.0, 100, 0, 
+		     "Use a custom file to load data from");
+	
+	if (last_seq->flag & SEQ_USE_PROXY_CUSTOM_DIR ||
+	    last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+		yofs -= 20;
 
-			uiDefBut(block, TEX, 
-				 B_SEQ_BUT_RELOAD, "Dir: ", 
-				 30,120,220,20, last_seq->strip->proxy->dir, 
-				 0.0, (float)sizeof(last_seq->strip->proxy->dir)-1, 100, 0, "");
-		}
-		if (last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
-			uiDefIconBut(block, BUT, B_SEQ_SEL_PROXY_FILE, 
-				     ICON_FILESEL, 10, 100, 20, 20, 0, 0, 0, 
-				     0, 0, 
-				     "Select the custom proxy file "
-				     "(used for all preview resolutions!)");
+		uiDefIconBut(block, BUT, B_SEQ_SEL_PROXY_DIR, 
+			     ICON_FILESEL, 10, yofs, 20, 20, 0, 0, 0, 0, 0, 
+			     "Select the directory/name for "
+			     "the proxy storage");
+		
+		uiDefBut(block, TEX, 
+			 B_SEQ_BUT_RELOAD, "Dir: ", 
+			 30,yofs,220,20, last_seq->strip->proxy->dir, 
+			 0.0, (float)sizeof(last_seq->strip->proxy->dir)-1, 
+			 100, 0, "");
+	}
 
-			uiDefBut(block, TEX, 
-				 B_SEQ_BUT_RELOAD, "File: ", 
-				 30,100,220,20, last_seq->strip->proxy->file, 
-				 0.0, (float)sizeof(last_seq->strip->proxy->file)-1, 100, 0, "");
-		}
+	if (last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+		yofs -= 20;
+		uiDefIconBut(block, BUT, B_SEQ_SEL_PROXY_FILE, 
+			     ICON_FILESEL, 10, yofs, 20, 20, 0, 0, 0, 
+			     0, 0, 
+			     "Select the custom proxy file "
+			     "(used for all preview resolutions!)");
+		
+		uiDefBut(block, TEX, 
+			 B_SEQ_BUT_RELOAD, "File: ", 
+			 30, yofs,220,20, last_seq->strip->proxy->file, 
+			 0.0, (float)sizeof(last_seq->strip->proxy->file)-1, 
+			 100, 0, "");
 	}
 
-	if (last_seq->flag & SEQ_USE_PROXY) {
-		if (G.scene->r.size == 100) {
-			uiDefBut(block, LABEL, 0, 
-				 "Full render size selected, ",
-				 10,60,240,19, 0, 0, 0, 0, 0, "");
-			uiDefBut(block, LABEL, 0, 
-				 "so no proxy enabled!",
-				 10,40,240,19, 0, 0, 0, 0, 0, "");
-		} else if (last_seq->type != SEQ_MOVIE 
-			   && last_seq->type != SEQ_IMAGE
-			   && !(last_seq->flag & SEQ_USE_PROXY_CUSTOM_DIR)) {
-			uiDefBut(block, LABEL, 0, 
-				 "Cannot proxy this strip without ",
-				 10,60,240,19, 0, 0, 0, 0, 0, "");
-			uiDefBut(block, LABEL, 0, 
-				 "custom directory selection!",
-				 10,40,240,19, 0, 0, 0, 0, 0, "");
-		} else if (!(last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE)) {
-			uiDefBut(block, BUT, B_SEQ_BUT_REBUILD_PROXY, 
-				 "Rebuild proxy",
-				 10,60,240,19, 0, 0, 0, 0, 0, 
-				 "Rebuild proxy for the "
-				 "currently selected strip.");
+	if (!(last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE)) {
+		if (last_seq->strip->proxy->size == 0) {
+			if (G.scene->r.size != 100) {
+				last_seq->strip->proxy->size = G.scene->r.size;
+			} else {
+				last_seq->strip->proxy->size = 25;
+			}
 		}
+		if (last_seq->strip->proxy->quality == 0) {
+			last_seq->strip->proxy->quality = 90;
+		}
+		yofs -= 25;
+
+		uiDefButS(block, NUM,B_DIFF, "Q:",  10,yofs,74,20, 
+			  &last_seq->strip->proxy->quality, 
+			  10.0, 100.0, 0, 0, 
+			  "Quality setting for JPEG images");
+		uiDefButS(block, ROW,B_DIFF,"75%",  90,yofs,53,20,
+			  &last_seq->strip->proxy->size,1.0,75.0, 0, 0, 
+			  "Set proxy size to 3/4 of defined size");
+		uiDefButS(block, ROW,B_DIFF,"50%",  143,yofs,53,20,
+			  &last_seq->strip->proxy->size,1.0,50.0, 0, 0, 
+			  "Set proxy size to 1/2 of defined size");
+		uiDefButS(block, ROW,B_DIFF,"25%",  196,yofs,53,20,
+			  &last_seq->strip->proxy->size,1.0,25.0, 0, 0, 
+			  "Set proxy size to 1/4 of defined size");
 	}
 
+	if (last_seq->type != SEQ_MOVIE 
+	    && last_seq->type != SEQ_IMAGE
+	    && !(last_seq->flag & SEQ_USE_PROXY_CUSTOM_DIR)) {
+		yofs -= 20;
+		uiDefBut(block, LABEL, 0, 
+			 "Cannot proxy this strip without ",
+			 30,yofs,240,19, 0, 0, 0, 0, 0, "");
+		yofs -= 20;
+		uiDefBut(block, LABEL, 0, 
+			 "custom directory selection!",
+			 30,yofs,240,19, 0, 0, 0, 0, 0, "");
+	} else if (!(last_seq->flag & SEQ_USE_PROXY_CUSTOM_FILE)) {
+		yofs -= 45;
+		uiDefBut(block, BUT, B_SEQ_BUT_REBUILD_PROXY, 
+			 "Rebuild proxy",
+			 10,yofs,240,40, 0, 0, 0, 0, 0, 
+			 "Rebuild proxy for the "
+			 "currently selected strip.");
+	}
+
 	uiBlockEndAlign(block);
+
 }
 
 

Modified: trunk/blender/source/blender/src/drawseq.c
===================================================================
--- trunk/blender/source/blender/src/drawseq.c	2009-06-14 18:16:38 UTC (rev 20880)
+++ trunk/blender/source/blender/src/drawseq.c	2009-06-14 18:54:35 UTC (rev 20881)
@@ -849,7 +849,8 @@
 	static int recursive= 0;
 	float zoom;
 	float zoomx, zoomy;
-	int render_size = 0;
+	float render_size = 0.0;
+	float proxy_size = 100.0;
 
 	glClearColor(0.0, 0.0, 0.0, 0.0);
 	glClear(GL_COLOR_BUFFER_BIT);
@@ -860,6 +861,8 @@
 	render_size = sseq->render_size;
 	if (render_size == 0) {
 		render_size = G.scene->r.size;
+	} else {
+		proxy_size = render_size;
 	}
 	if (render_size < 0) {
 		return;
@@ -879,16 +882,16 @@
 		recursive= 1;
 		if (special_seq_update) {
 			ibuf= give_ibuf_seq_direct(
-				rectx, recty, (G.scene->r.cfra), render_size,
+				rectx, recty, (G.scene->r.cfra), proxy_size,
 				special_seq_update);
 		} else if (!U.prefetchframes || (G.f & G_PLAYANIM) == 0) {
 			ibuf= (ImBuf *)give_ibuf_seq(
 				rectx, recty, (G.scene->r.cfra), 
-				sseq->chanshown, render_size);
+				sseq->chanshown, proxy_size);
 		} else {
 			ibuf= (ImBuf *)give_ibuf_seq_threaded(
 				rectx, recty, (G.scene->r.cfra), 
-				sseq->chanshown, render_size);
+				sseq->chanshown, proxy_size);
 		}
 		recursive= 0;
 		
@@ -939,7 +942,7 @@
 	
 	zoom= SEQ_ZOOM_FAC(sseq->zoom);
 	if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
-		zoom /= render_size / 100.0;
+		zoom /= proxy_size / 100.0;
 		zoomx = zoom * ((float)G.scene->r.xasp / (float)G.scene->r.yasp);
 		zoomy = zoom;
 	} else {
@@ -1122,8 +1125,11 @@
 	SpaceSeq *sseq= sa->spacedata.first;
 	int rectx, recty;
 	int render_size = sseq->render_size;
+	int proxy_size = 100.0; 
 	if (render_size == 0) {
 		render_size = G.scene->r.size;
+	} else {
+		proxy_size = render_size;
 	}
 	if (render_size < 0) {
 		return;
@@ -1135,7 +1141,7 @@
 	if(sseq->mainb) {
 		give_ibuf_prefetch_request(
 			rectx, recty, (G.scene->r.cfra), sseq->chanshown,

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list