[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32816] trunk/blender/source/blender/ blenkernel: Sequencer: fix for the fix of: #23318

Peter Schlaile peter at schlaile.de
Mon Nov 1 19:55:18 CET 2010


Revision: 32816
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32816
Author:   schlaile
Date:     2010-11-01 19:55:12 +0100 (Mon, 01 Nov 2010)

Log Message:
-----------
Sequencer: fix for the fix of: #23318
also known as: broken multicam strip caused by other fix.

Calculated render_size where it belongs (within the glow effect) and 
restored old functionality.

also: renamed render_size to preview_render_size at all relevant places, 
where the naming wasn't used correctly.

Hopefully it's now a little bit more clear. 

render_size := render size from scene (just rescales width/height)
preview_render_size := preview render size from sequencer preview, 
  controls the resolution and the use of sequencer proxy sources

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/seqeffects.c
    trunk/blender/source/blender/blenkernel/intern/sequencer.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-11-01 18:13:10 UTC (rev 32815)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-11-01 18:55:12 UTC (rev 32816)
@@ -153,10 +153,10 @@
 void seq_free_clipboard(void);
 struct Editing *seq_give_editing(struct Scene *scene, int alloc);
 char *give_seqname(struct Sequence *seq);
-struct ImBuf *give_ibuf_seq(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
-struct ImBuf *give_ibuf_seq_threaded(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
-struct ImBuf *give_ibuf_seq_direct(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq);
-struct ImBuf *give_ibuf_seqbase(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chan_shown, int render_size, struct ListBase *seqbasep);
+struct ImBuf *give_ibuf_seq(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int preview_render_size);
+struct ImBuf *give_ibuf_seq_threaded(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int preview_render_size);
+struct ImBuf *give_ibuf_seq_direct(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int preview_render_size, struct Sequence *seq);
+struct ImBuf *give_ibuf_seqbase(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chan_shown, int preview_render_size, struct ListBase *seqbasep);
 void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size);
 void calc_sequence(struct Scene *scene, struct Sequence *seq);
 void calc_sequence_disp(struct Scene *scene, struct Sequence *seq);

Modified: trunk/blender/source/blender/blenkernel/intern/seqeffects.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/seqeffects.c	2010-11-01 18:13:10 UTC (rev 32815)
+++ trunk/blender/source/blender/blenkernel/intern/seqeffects.c	2010-11-01 18:55:12 UTC (rev 32816)
@@ -2660,14 +2660,16 @@
 }
 
 static struct ImBuf * do_glow_effect(
-	Main *UNUSED(bmain), Scene *UNUSED(scene), Sequence *seq, float UNUSED(cfra),
+	Main *UNUSED(bmain), Scene * scene, Sequence *seq, float UNUSED(cfra),
 	float facf0, float facf1, int x, int y, 
-	int render_size,
+	int UNUSED(preview_render_size),
 	struct ImBuf *ibuf1, struct ImBuf *ibuf2, 
 	struct ImBuf *ibuf3)
 {
 	struct ImBuf * out = prepare_effect_imbufs(x, y, ibuf1, ibuf2, ibuf3);
 
+	int render_size = 100*x/scene->r.xsch;
+
 	if (out->rect_float) {
 		do_glow_effect_float(seq, render_size,
 					 facf0, facf1, x, y,

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-11-01 18:13:10 UTC (rev 32815)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2010-11-01 18:55:12 UTC (rev 32816)
@@ -1022,7 +1022,7 @@
 
 #define PROXY_MAXFILE (2*FILE_MAXDIR+FILE_MAXFILE)
 
-static int seq_proxy_get_fname(Scene *UNUSED(scene), Sequence * seq, int cfra, char * name, int render_size)
+static int seq_proxy_get_fname(Scene *UNUSED(scene), Sequence * seq, int cfra, char * name, int preview_render_size)
 {
 	int frameno;
 	char dir[FILE_MAXDIR];
@@ -1053,17 +1053,17 @@
 	switch(seq->type) {
 	case SEQ_IMAGE:
 		snprintf(name, PROXY_MAXFILE, "%s/images/%d/%s_proxy", dir,
-					render_size, give_stripelem(seq, cfra)->name);
+					preview_render_size, give_stripelem(seq, cfra)->name);
 		frameno = 1;
 		break;
 	case SEQ_MOVIE:
 		frameno = (int) give_stripelem_index(seq, cfra) + seq->anim_startofs;
 		snprintf(name, PROXY_MAXFILE, "%s/%s/%d/####", dir,
-					seq->strip->stripdata->name, render_size);
+					seq->strip->stripdata->name, preview_render_size);
 		break;
 	default:
 		frameno = (int) give_stripelem_index(seq, cfra) + seq->anim_startofs;
-		snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir, render_size);
+		snprintf(name, PROXY_MAXFILE, "%s/proxy_misc/%d/####", dir, preview_render_size);
 	}
 
 	BLI_path_abs(name, G.main->name);
@@ -1074,7 +1074,7 @@
 	return TRUE;
 }
 
-static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, int render_size)
+static struct ImBuf * seq_proxy_fetch(Scene *scene, Sequence * seq, int cfra, int preview_render_size)
 {
 	char name[PROXY_MAXFILE];
 
@@ -1083,14 +1083,14 @@
 	}
 
 	/* rendering at 100% ? No real sense in proxy-ing, right? */
-	if (render_size == 100) {
+	if (preview_render_size == 100) {
 		return 0;
 	}
 
 	if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
 		int frameno = (int) give_stripelem_index(seq, cfra) + seq->anim_startofs;
 		if (seq->strip->proxy->anim == NULL) {
-			if (seq_proxy_get_fname(scene, seq, cfra, name, render_size)==0) {
+			if (seq_proxy_get_fname(scene, seq, cfra, name, preview_render_size)==0) {
 				return 0;
 			}
  
@@ -1103,7 +1103,7 @@
 		return IMB_anim_absolute(seq->strip->proxy->anim, frameno);
 	}
  
-	if (seq_proxy_get_fname(scene, seq, cfra, name, render_size)==0) {
+	if (seq_proxy_get_fname(scene, seq, cfra, name, preview_render_size)==0) {
 		return 0;
 	}
 
@@ -1116,9 +1116,9 @@
 
 #if 0
 static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int cfra,
-				  int build_proxy_run, int render_size);
+				  int build_proxy_run, int preview_render_size);
 
-static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int render_size, int seqrectx, int seqrecty)
+static void seq_proxy_build_frame(Scene *scene, Sequence * seq, int cfra, int preview_render_size, int seqrectx, int seqrecty)
 {
 	char name[PROXY_MAXFILE];
 	int quality;
@@ -1132,7 +1132,7 @@
 	}
 
 	/* rendering at 100% ? No real sense in proxy-ing, right? */
-	if (render_size == 100) {
+	if (preview_render_size == 100) {
 		return;
 	}
 
@@ -1141,7 +1141,7 @@
 		return;
 	}
 
-	if (!seq_proxy_get_fname(scene, seq, cfra, name, render_size)) {
+	if (!seq_proxy_get_fname(scene, seq, cfra, name, preview_render_size)) {
 		return;
 	}
 
@@ -1155,15 +1155,15 @@
 		se->ibuf = 0;
 	}
 	
-	do_build_seq_ibuf(scene, seq, se, cfra, TRUE, render_size,
+	do_build_seq_ibuf(scene, seq, se, cfra, TRUE, preview_render_size,
 			  seqrectx, seqrecty);
 
 	if (!se->ibuf) {
 		return;
 	}
 
-	rectx= (render_size*scene->r.xsch)/100;
-	recty= (render_size*scene->r.ysch)/100;
+	rectx= (preview_render_size*scene->r.xsch)/100;
+	recty= (preview_render_size*scene->r.ysch)/100;
 
 	ibuf = se->ibuf;
 
@@ -1629,14 +1629,14 @@
    ********************************************************************** */
 
 static ImBuf* seq_render_strip_stack( Main *bmain, Scene *scene, ListBase *seqbasep,
-		float cfra, int chanshown, int render_size, int seqrectx, int seqrecty);
+		float cfra, int chanshown, int preview_render_size, int seqrectx, int seqrecty);
 
 static ImBuf * seq_render_strip(Main *bmain, Scene *scene, Sequence * seq, float cfra,
-		int render_size, int seqrectx, int seqrecty);
+		int preview_render_size, int seqrectx, int seqrecty);
 
 
 static ImBuf* seq_render_effect_strip_impl(Main *bmain, Scene *scene, float cfra,
-		Sequence *seq, int render_size, int seqrectx, int seqrecty)
+		Sequence *seq, int preview_render_size, int seqrectx, int seqrecty)
 {
 	float fac, facf;
 	int early_out;
@@ -1656,15 +1656,6 @@
 		return out;
 	}
 
-	/* Override render size here, effects need to get the actual
-	 * ratio so they can scale appropriately. This whole business
-	 * with render size, proxy size, and seqrectx, etc. is a bit
-	 * complicated and should probably be cleaned up and handled
-	 * properly way before we get to this point. -jahka
-	 * (fix for bug #23318)
-	 */
-	render_size = 100*seqrectx/scene->r.xsch;
-
 	if (seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) {
 		sh.get_default_fac(seq, cfra, &fac, &facf);
 		
@@ -1688,23 +1679,23 @@
 	switch (early_out) {
 	case EARLY_NO_INPUT:
 		out = sh.execute(bmain, scene, seq, cfra, fac, facf, 
-				 seqrectx, seqrecty, render_size, NULL, NULL, NULL);
+				 seqrectx, seqrecty, preview_render_size, NULL, NULL, NULL);
 	case EARLY_DO_EFFECT:
 		for(i=0; i<3; i++) {
 			if(input[i])
 				ibuf[i] = seq_render_strip(bmain, scene, input[i], cfra,
-							render_size, seqrectx, seqrecty);
+							preview_render_size, seqrectx, seqrecty);
 		}
 
 		if (ibuf[0] && ibuf[1]) {
 			out = sh.execute(bmain, scene, seq, cfra, fac, facf, seqrectx, seqrecty, 
-					 render_size, ibuf[0], ibuf[1], ibuf[2]);
+					 preview_render_size, ibuf[0], ibuf[1], ibuf[2]);
 		}
 		break;
 	case EARLY_USE_INPUT_1:
 		if (input[0]) {
 			ibuf[0] = seq_render_strip(bmain, scene, input[0], cfra,
-						   render_size, seqrectx, seqrecty);
+						   preview_render_size, seqrectx, seqrecty);
 		}
 		if (ibuf[0]) {
 			if (input_have_to_preprocess(scene, seq, cfra, seqrectx, seqrecty)) {
@@ -1718,7 +1709,7 @@
 	case EARLY_USE_INPUT_2:
 		if (input[1]) {
 			ibuf[1] = seq_render_strip(bmain, scene, input[1], cfra,
-						   render_size, seqrectx, seqrecty);
+						   preview_render_size, seqrectx, seqrecty);
 		}
 		if (ibuf[1]) {
 			if (input_have_to_preprocess(scene, seq, cfra, seqrectx, seqrecty)) {
@@ -1880,7 +1871,7 @@
 }
 
 static ImBuf * seq_render_strip(Main *bmain, Scene *scene, Sequence * seq, float cfra,
-				int render_size, int seqrectx, int seqrecty)
+				int preview_render_size, int seqrectx, int seqrecty)
 {
 	ImBuf * ibuf = NULL;
 	char name[FILE_MAXDIR+FILE_MAXFILE];
@@ -1899,7 +1890,7 @@
 		use_preprocess = FALSE;
 
 	if (ibuf == NULL)
-		ibuf = seq_proxy_fetch(scene, seq, cfra, render_size);
+		ibuf = seq_proxy_fetch(scene, seq, cfra, preview_render_size);
 
 	if(ibuf == NULL) switch(type) {
 		case SEQ_META:
@@ -1908,7 +1899,7 @@
 
 			if(seq->seqbase.first)
 				meta_ibuf = seq_render_strip_stack(bmain, scene, &seq->seqbase,
-							seq->start + nr, 0, render_size, seqrectx, seqrecty);
+							seq->start + nr, 0, preview_render_size, seqrectx, seqrecty);
 
 			if(meta_ibuf) {
 				ibuf = meta_ibuf;
@@ -1934,7 +1925,7 @@
 			/* weeek! */
 			f_cfra = seq->start + s->frameMap[(int) nr];
 
-			child_ibuf = seq_render_strip(bmain, scene, seq->seq1, f_cfra, render_size,

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list