[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20380] trunk/blender/source/blender: == Sequencer ==
Peter Schlaile
peter at schlaile.de
Sun May 24 15:41:37 CEST 2009
Revision: 20380
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20380
Author: schlaile
Date: 2009-05-24 15:41:37 +0200 (Sun, 24 May 2009)
Log Message:
-----------
== Sequencer ==
This adds custom proxy file storage to the sequencer.
Reasoning: sometimes low resolution versions are already available as a
seperate file built by the capture application.
So there is no real reason to make blender build it's own seperate proxy.
This also somewhat fixes (aehm works around :) )
[#13632] Creating Proxy Takes Over Process, Should be Background
Since now you can just fire up ffmpeg to build your proxies in the background.
(You could have done before and build a directory of jpeg files, but then you
would have to rename all the files since otherwise things are off by one...)
Modified Paths:
--------------
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/include/butspace.h
trunk/blender/source/blender/makesdna/DNA_sequence_types.h
trunk/blender/source/blender/src/buttons_scene.c
trunk/blender/source/blender/src/sequence.c
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2009-05-24 13:29:29 UTC (rev 20379)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2009-05-24 13:41:37 UTC (rev 20380)
@@ -3689,6 +3689,7 @@
if (seq->flag & SEQ_USE_PROXY) {
seq->strip->proxy = newdataadr(
fd, seq->strip->proxy);
+ seq->strip->proxy->anim = 0;
} else {
seq->strip->proxy = 0;
}
Modified: trunk/blender/source/blender/include/butspace.h
===================================================================
--- trunk/blender/source/blender/include/butspace.h 2009-05-24 13:29:29 UTC (rev 20379)
+++ trunk/blender/source/blender/include/butspace.h 2009-05-24 13:41:37 UTC (rev 20380)
@@ -318,7 +318,7 @@
/* *********************** */
#define B_RENDERBUTS 1690
-#define B_SEQUENCERBUTS 1699
+#define B_SEQUENCERBUTS 1700
#define B_FS_PIC 1601
#define B_FS_BACKBUF 1602
@@ -377,6 +377,7 @@
#define B_SEQ_BUT_RELOAD_FILE 1696
#define B_SEQ_BUT_REBUILD_PROXY 1697
#define B_SEQ_SEL_PROXY_DIR 1698
+#define B_SEQ_SEL_PROXY_FILE 1699
/* *********************** */
#define B_ARMATUREBUTS 1800
#define B_POSE 1701
Modified: trunk/blender/source/blender/makesdna/DNA_sequence_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_sequence_types.h 2009-05-24 13:29:29 UTC (rev 20379)
+++ trunk/blender/source/blender/makesdna/DNA_sequence_types.h 2009-05-24 13:41:37 UTC (rev 20380)
@@ -78,6 +78,8 @@
typedef struct StripProxy {
char dir[160];
+ char file[80];
+ struct anim *anim;
} StripProxy;
typedef struct Strip {
@@ -258,6 +260,7 @@
#define SEQ_USE_COLOR_BALANCE 262144
#define SEQ_USE_PROXY_CUSTOM_DIR 524288
#define SEQ_ACTIVE 1048576
+#define SEQ_USE_PROXY_CUSTOM_FILE 2097152
#define SEQ_COLOR_BALANCE_INVERSE_GAIN 1
#define SEQ_COLOR_BALANCE_INVERSE_GAMMA 2
Modified: trunk/blender/source/blender/src/buttons_scene.c
===================================================================
--- trunk/blender/source/blender/src/buttons_scene.c 2009-05-24 13:29:29 UTC (rev 20379)
+++ trunk/blender/source/blender/src/buttons_scene.c 2009-05-24 13:41:37 UTC (rev 20380)
@@ -1174,7 +1174,7 @@
uiDefButBitI(block, TOG, SEQ_USE_PROXY,
B_SEQ_BUT_RELOAD, "Use Proxy",
- 10,140,120,19, &last_seq->flag,
+ 10,140,80,19, &last_seq->flag,
0.0, 21.0, 100, 0,
"Use a preview proxy for this strip");
@@ -1187,10 +1187,16 @@
uiDefButBitI(block, TOG, SEQ_USE_PROXY_CUSTOM_DIR,
B_SEQ_BUT_RELOAD, "Custom Dir",
- 130,140,120,19, &last_seq->flag,
+ 90,140,80,19, &last_seq->flag,
0.0, 21.0, 100, 0,
"Use a custom directory to store data");
+ 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");
+
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,
@@ -1202,30 +1208,41 @@
30,120,220,20, last_seq->strip->proxy->dir,
0.0, 160.0, 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!)");
+
+ uiDefBut(block, TEX,
+ B_SEQ_BUT_RELOAD, "File: ",
+ 30,100,220,20, last_seq->strip->proxy->file,
+ 0.0, 160.0, 100, 0, "");
+ }
}
if (last_seq->flag & SEQ_USE_PROXY) {
if (G.scene->r.size == 100) {
uiDefBut(block, LABEL, 0,
"Full render size selected, ",
- 10,100,240,19, 0, 0, 0, 0, 0, "");
+ 10,60,240,19, 0, 0, 0, 0, 0, "");
uiDefBut(block, LABEL, 0,
"so no proxy enabled!",
- 10,80,240,19, 0, 0, 0, 0, 0, "");
+ 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,100,240,19, 0, 0, 0, 0, 0, "");
+ 10,60,240,19, 0, 0, 0, 0, 0, "");
uiDefBut(block, LABEL, 0,
"custom directory selection!",
- 10,80,240,19, 0, 0, 0, 0, 0, "");
-
- } else {
+ 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,100,240,19, 0, 0, 0, 0, 0,
+ 10,60,240,19, 0, 0, 0, 0, 0,
"Rebuild proxy for the "
"currently selected strip.");
}
@@ -1294,9 +1311,21 @@
allqueue(REDRAWBUTSSCENE, 0);
- BIF_undo_push("Change proxy directory");
+ BIF_undo_push("Change custom proxy directory");
}
+static void sel_proxy_file(char *name)
+{
+ Sequence *last_seq = get_last_seq();
+
+ BLI_split_dirfile_basic(name, last_seq->strip->proxy->dir,
+ last_seq->strip->proxy->file);
+
+ allqueue(REDRAWBUTSSCENE, 0);
+
+ BIF_undo_push("Change custom proxy file");
+}
+
void do_sequencer_panels(unsigned short event)
{
Sequence *last_seq = get_last_seq();
@@ -1324,6 +1353,13 @@
last_seq->strip->proxy->dir,
sel_proxy_dir);
break;
+ case B_SEQ_SEL_PROXY_FILE:
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ activate_fileselect(FILE_SPECIAL, "SELECT PROXY FILE",
+ last_seq->strip->proxy->dir,
+ sel_proxy_file);
+ break;
case B_SEQ_BUT_RELOAD:
case B_SEQ_BUT_RELOAD_ALL:
update_seq_ipo_rect(last_seq);
Modified: trunk/blender/source/blender/src/sequence.c
===================================================================
--- trunk/blender/source/blender/src/sequence.c 2009-05-24 13:29:29 UTC (rev 20379)
+++ trunk/blender/source/blender/src/sequence.c 2009-05-24 13:41:37 UTC (rev 20380)
@@ -106,6 +106,14 @@
}
+static void free_proxy_seq(Sequence *seq)
+{
+ if (seq->strip && seq->strip->proxy && seq->strip->proxy->anim) {
+ IMB_free_anim(seq->strip->proxy->anim);
+ seq->strip->proxy->anim = 0;
+ }
+}
+
void free_strip(Strip *strip)
{
strip->us--;
@@ -120,6 +128,10 @@
}
if (strip->proxy) {
+ if (strip->proxy->anim) {
+ IMB_free_anim(strip->proxy->anim);
+ }
+
MEM_freeN(strip->proxy);
}
if (strip->crop) {
@@ -517,6 +529,8 @@
seq->strip->len = seq->len;
}
+ free_proxy_seq(seq);
+
calc_sequence(seq);
}
@@ -1053,6 +1067,12 @@
}
}
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ snprintf(name, PROXY_MAXFILE, "%s/%s",
+ dir, seq->strip->proxy->file);
+ return TRUE;
+ }
+
/* generate a seperate proxy directory for each preview size */
if (seq->type == SEQ_IMAGE) {
@@ -1099,6 +1119,20 @@
return 0;
}
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ if (!seq->strip->proxy->anim) {
+ if (!seq_proxy_get_fname(seq, cfra, name)) {
+ return 0;
+ }
+
+ seq->strip->proxy->anim = openanim(name, IB_rect);
+ }
+ if (!seq->strip->proxy->anim) {
+ return 0;
+ }
+ return IMB_anim_absolute(seq->strip->proxy->anim, cfra);
+ }
+
if (!seq_proxy_get_fname(seq, cfra, name)) {
return 0;
}
@@ -1131,6 +1165,11 @@
return;
}
+ /* that's why it is called custom... */
+ if (seq->flag & SEQ_USE_PROXY_CUSTOM_FILE) {
+ return;
+ }
+
if (!seq_proxy_get_fname(seq, cfra, name)) {
return;
}
@@ -2866,6 +2905,7 @@
if(seq->type==SEQ_MOVIE)
if(seq->startdisp > cfra || seq->enddisp < cfra)
free_anim_seq(seq);
+ free_proxy_seq(seq);
}
}
END_SEQ
@@ -2909,6 +2949,7 @@
if(seq->type==SEQ_SPEED) {
sequence_effect_speed_rebuild_map(seq, 1);
}
+ free_proxy_seq(seq);
}
}
END_SEQ
@@ -2974,6 +3015,7 @@
if(seq->type == SEQ_SPEED) {
sequence_effect_speed_rebuild_map(seq, 1);
}
+ free_proxy_seq(seq);
}
if(len_change)
More information about the Bf-blender-cvs
mailing list