diff options
author | Peter Schlaile <peter@schlaile.de> | 2007-10-01 12:03:11 +0400 |
---|---|---|
committer | Peter Schlaile <peter@schlaile.de> | 2007-10-01 12:03:11 +0400 |
commit | 5b1d6690068876843c5bec284056b17db3af9f0b (patch) | |
tree | 9a49117282c1ab016189a2aedcc388a69956c2c9 /source/blender/src/space.c | |
parent | 2182f53a9a5e69c76d9efbbee46134935df242a6 (diff) |
== Sequencer ==
This patch adds prefetch buffering to the sequencer
(see the tracker for additional details:
https://projects.blender.org/tracker/?func=detail&aid=7307&group_id=9&atid=127
)
We create seperate render threads (currently one, because of the fact,
that sequence rendering modifies global structures...), that
render up to the defined userpref value "Prefetch frames" in advance.
(Pressing Alt-A will _first_ fill the buffer and then start playing.)
Bassam and I did some extensive testing, so it should work.
If you don't configure your number of prefetch frames, prefetching is disabled!
(Sane defaults... :)
Also: if the machine is definitely too slow and runs out of the prefetch
area, prefetching is disabled automatically and we are back to good old
frame skipping mode.
My Dual Athlon is able to handle 4 parallel DV streams at once (sometimes
a little bit choppy, but prefetching is never disabled!)
I fixed also a long standing bug in the audio code, that made playback run
backwards at the beginning...
Diffstat (limited to 'source/blender/src/space.c')
-rw-r--r-- | source/blender/src/space.c | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 23bcea7470d..5eceb5ee433 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -3160,8 +3160,8 @@ void drawinfospace(ScrArea *sa, void *spacedata) uiBlock *block; static short cur_light=0; float fac, col[3]; - short xpos, ypos, ypostab, buth, rspace, dx, y1, y2, y3, y4, y5, y6; - short y2label, y3label, y4label, y5label, y6label; + short xpos, ypos, ypostab, buth, rspace, dx, y1, y2, y3, y4, y5, y6, y7; + short y2label, y3label, y4label, y5label, y6label, y7label; short spref, mpref, lpref, smfileselbut; short edgsp, midsp; char naam[32]; @@ -3212,6 +3212,7 @@ void drawinfospace(ScrArea *sa, void *spacedata) y4 = ypos+3*(buth+rspace); y5 = ypos+4*(buth+rspace); y6 = ypos+5*(buth+rspace); + y7 = ypos+6*(buth+rspace); y2label = y2-2; /* adjustments to offset the labels down to align better */ @@ -3219,6 +3220,7 @@ void drawinfospace(ScrArea *sa, void *spacedata) y4label = y4-2; y5label = y5-2; y6label = y6-2; + y7label = y7-2; /* set the color to blue and draw the main 'tab' controls */ @@ -3810,8 +3812,13 @@ void drawinfospace(ScrArea *sa, void *spacedata) uiDefBut(block, LABEL,0,"System:", - (xpos+edgsp+(4*midsp)+(4*mpref)),y6label,mpref,buth, + (xpos+edgsp+(4*midsp)+(4*mpref)),y7label,mpref,buth, 0, 0, 0, 0, 0, ""); + uiDefButI(block, NUM, B_REDR, "Prefetch frames ", + (xpos+edgsp+(4*mpref)+(4*midsp)), y6, mpref, buth, + &U.prefetchframes, 0.0, 50.0, 20, 2, + "Number of frames to render ahead during playback."); + uiDefButI(block, NUM, B_MEMCACHELIMIT, "MEM Cache Limit ", (xpos+edgsp+(4*mpref)+(4*midsp)), y5, mpref, buth, &U.memcachelimit, 0.0, 1024.0, 30, 2, @@ -6274,7 +6281,7 @@ SpaceType *spaceaction_get_type(void) if (!st) { st= spacetype_new("Action"); - spacetype_set_winfuncs(st, drawactionspace, changeactionspace, winqreadactionspace); + spacetype_set_winfuncs(st, NULL, drawactionspace, changeactionspace, winqreadactionspace); } return st; @@ -6285,7 +6292,7 @@ SpaceType *spacebuts_get_type(void) if (!st) { st= spacetype_new("Buts"); - spacetype_set_winfuncs(st, drawbutspace, changebutspace, winqreadbutspace); + spacetype_set_winfuncs(st, NULL, drawbutspace, changebutspace, winqreadbutspace); } return st; @@ -6296,7 +6303,7 @@ SpaceType *spacefile_get_type(void) if (!st) { st= spacetype_new("File"); - spacetype_set_winfuncs(st, drawfilespace, NULL, winqreadfilespace); + spacetype_set_winfuncs(st, NULL, drawfilespace, NULL, winqreadfilespace); } return st; @@ -6307,7 +6314,7 @@ SpaceType *spaceimage_get_type(void) if (!st) { st= spacetype_new("Image"); - spacetype_set_winfuncs(st, drawimagespace, changeimagepace, winqreadimagespace); + spacetype_set_winfuncs(st, NULL, drawimagespace, changeimagepace, winqreadimagespace); } return st; @@ -6318,7 +6325,7 @@ SpaceType *spaceimasel_get_type(void) if (!st) { st= spacetype_new("Imasel"); - spacetype_set_winfuncs(st, drawimaselspace, changeimaselspace, winqreadimaselspace); + spacetype_set_winfuncs(st, NULL, drawimaselspace, changeimaselspace, winqreadimaselspace); } return st; @@ -6329,7 +6336,7 @@ SpaceType *spaceinfo_get_type(void) if (!st) { st= spacetype_new("Info"); - spacetype_set_winfuncs(st, drawinfospace, NULL, winqreadinfospace); + spacetype_set_winfuncs(st, NULL, drawinfospace, NULL, winqreadinfospace); } return st; @@ -6340,7 +6347,7 @@ SpaceType *spaceipo_get_type(void) if (!st) { st= spacetype_new("Ipo"); - spacetype_set_winfuncs(st, drawipospace, changeview2dspace, winqreadipospace); + spacetype_set_winfuncs(st, NULL, drawipospace, changeview2dspace, winqreadipospace); } return st; @@ -6351,7 +6358,7 @@ SpaceType *spacenla_get_type(void) if (!st) { st= spacetype_new("Nla"); - spacetype_set_winfuncs(st, drawnlaspace, changeview2dspace, winqreadnlaspace); + spacetype_set_winfuncs(st, NULL, drawnlaspace, changeview2dspace, winqreadnlaspace); } return st; @@ -6362,7 +6369,7 @@ SpaceType *spaceoops_get_type(void) if (!st) { st= spacetype_new("Oops"); - spacetype_set_winfuncs(st, drawoopsspace, changeview2dspace, winqreadoopsspace); + spacetype_set_winfuncs(st, NULL, drawoopsspace, changeview2dspace, winqreadoopsspace); } return st; @@ -6373,7 +6380,7 @@ SpaceType *spaceseq_get_type(void) if (!st) { st= spacetype_new("Sequence"); - spacetype_set_winfuncs(st, drawseqspace, changeview2dspace, winqreadseqspace); + spacetype_set_winfuncs(st, drawprefetchseqspace, drawseqspace, changeview2dspace, winqreadseqspace); } return st; @@ -6384,7 +6391,7 @@ SpaceType *spacesound_get_type(void) if (!st) { st= spacetype_new("Sound"); - spacetype_set_winfuncs(st, drawsoundspace, changeview2dspace, winqreadsoundspace); + spacetype_set_winfuncs(st, NULL, drawsoundspace, changeview2dspace, winqreadsoundspace); } return st; @@ -6395,7 +6402,7 @@ SpaceType *spacetext_get_type(void) if (!st) { st= spacetype_new("Text"); - spacetype_set_winfuncs(st, drawtextspace, NULL, winqreadtextspace); + spacetype_set_winfuncs(st, NULL, drawtextspace, NULL, winqreadtextspace); } return st; @@ -6419,7 +6426,7 @@ SpaceType *spacescript_get_type(void) if (!st) { st = spacetype_new("Script"); - spacetype_set_winfuncs(st, drawscriptspace, spacescript_change, winqreadscriptspace); + spacetype_set_winfuncs(st, NULL, drawscriptspace, spacescript_change, winqreadscriptspace); } return st; @@ -6430,7 +6437,7 @@ SpaceType *spaceview3d_get_type(void) if (!st) { st= spacetype_new("View3D"); - spacetype_set_winfuncs(st, drawview3dspace, changeview3dspace, winqreadview3dspace); + spacetype_set_winfuncs(st, NULL, drawview3dspace, changeview3dspace, winqreadview3dspace); } return st; @@ -6441,7 +6448,7 @@ SpaceType *spacetime_get_type(void) if (!st) { st= spacetype_new("Time"); - spacetype_set_winfuncs(st, drawtimespace, NULL, winqreadtimespace); + spacetype_set_winfuncs(st, NULL, drawtimespace, NULL, winqreadtimespace); } return st; @@ -6453,7 +6460,7 @@ SpaceType *spacenode_get_type(void) if (!st) { st= spacetype_new("Node"); - spacetype_set_winfuncs(st, drawnodespace, changeview2dspace, winqreadnodespace); + spacetype_set_winfuncs(st, NULL, drawnodespace, changeview2dspace, winqreadnodespace); } return st; |