Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-01-18 22:16:19 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-01-18 22:18:36 +0400
commitf6624b84cf75aecad2899e3e43fc28fd9d2ea0d8 (patch)
treefbe86f35b6c460201a646f72389bca1248ff1e0f /source/blender/blenkernel/intern/sequencer.c
parent7142b970853f209f6c43319b7f862bcbdbea3728 (diff)
Send sequencer render context as const pointer rather than as value
No functional changes just creepy to send rather huge structure by value.
Diffstat (limited to 'source/blender/blenkernel/intern/sequencer.c')
-rw-r--r--source/blender/blenkernel/intern/sequencer.c198
1 files changed, 100 insertions, 98 deletions
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 337d9756296..d02cdae5a7b 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -85,10 +85,10 @@
# include "AUD_C-API.h"
#endif
-static ImBuf *seq_render_strip_stack(SeqRenderData context, ListBase *seqbasep, float cfra, int chanshown);
-static ImBuf *seq_render_strip(SeqRenderData context, Sequence *seq, float cfra);
+static ImBuf *seq_render_strip_stack(const SeqRenderData *context, ListBase *seqbasep, float cfra, int chanshown);
+static ImBuf *seq_render_strip(const SeqRenderData *context, Sequence *seq, float cfra);
static void seq_free_animdata(Scene *scene, Sequence *seq);
-static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short make_float);
+static ImBuf *seq_render_mask(const SeqRenderData *context, Mask *mask, float nr, short make_float);
/* **** XXX ******** */
#define SELECT 1
@@ -1367,12 +1367,12 @@ static int seq_proxy_get_fname(Sequence *seq, int cfra, int render_size, char *n
return TRUE;
}
-static ImBuf *seq_proxy_fetch(SeqRenderData context, Sequence *seq, int cfra)
+static ImBuf *seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int cfra)
{
char name[PROXY_MAXFILE];
- IMB_Proxy_Size psize = seq_rendersize_to_proxysize(context.preview_render_size);
+ IMB_Proxy_Size psize = seq_rendersize_to_proxysize(context->preview_render_size);
int size_flags;
- int render_size = context.preview_render_size;
+ int render_size = context->preview_render_size;
/* dirty hack to distinguish 100% render size from PROXY_100 */
if (render_size == 99) {
@@ -1419,7 +1419,7 @@ static ImBuf *seq_proxy_fetch(SeqRenderData context, Sequence *seq, int cfra)
ImBuf *ibuf = IMB_loadiffname(name, IB_rect, NULL);
if (ibuf)
- sequencer_imbuf_assign_spaces(context.scene, ibuf);
+ sequencer_imbuf_assign_spaces(context->scene, ibuf);
return ibuf;
}
@@ -1428,7 +1428,7 @@ static ImBuf *seq_proxy_fetch(SeqRenderData context, Sequence *seq, int cfra)
}
}
-static void seq_proxy_build_frame(SeqRenderData context, Sequence *seq, int cfra, int proxy_render_size)
+static void seq_proxy_build_frame(const SeqRenderData *context, Sequence *seq, int cfra, int proxy_render_size)
{
char name[PROXY_MAXFILE];
int quality;
@@ -1442,8 +1442,8 @@ static void seq_proxy_build_frame(SeqRenderData context, Sequence *seq, int cfra
ibuf = seq_render_strip(context, seq, cfra);
- rectx = (proxy_render_size * context.scene->r.xsch) / 100;
- recty = (proxy_render_size * context.scene->r.ysch) / 100;
+ rectx = (proxy_render_size * context->scene->r.xsch) / 100;
+ recty = (proxy_render_size * context->scene->r.ysch) / 100;
if (ibuf->x != rectx || ibuf->y != recty) {
IMB_scalefastImBuf(ibuf, (short)rectx, (short)recty);
@@ -1540,16 +1540,16 @@ void BKE_sequencer_proxy_rebuild(SeqIndexBuildContext *context, short *stop, sho
for (cfra = seq->startdisp + seq->startstill; cfra < seq->enddisp - seq->endstill; cfra++) {
if (context->size_flags & IMB_PROXY_25) {
- seq_proxy_build_frame(render_context, seq, cfra, 25);
+ seq_proxy_build_frame(&render_context, seq, cfra, 25);
}
if (context->size_flags & IMB_PROXY_50) {
- seq_proxy_build_frame(render_context, seq, cfra, 50);
+ seq_proxy_build_frame(&render_context, seq, cfra, 50);
}
if (context->size_flags & IMB_PROXY_75) {
- seq_proxy_build_frame(render_context, seq, cfra, 75);
+ seq_proxy_build_frame(&render_context, seq, cfra, 75);
}
if (context->size_flags & IMB_PROXY_100) {
- seq_proxy_build_frame(render_context, seq, cfra, 100);
+ seq_proxy_build_frame(&render_context, seq, cfra, 100);
}
*progress = (float) (cfra - seq->startdisp - seq->startstill) / (seq->enddisp - seq->endstill - seq->startdisp - seq->startstill);
@@ -1827,7 +1827,7 @@ static void *color_balance_do_thread(void *thread_data_v)
return NULL;
}
-ImBuf *BKE_sequencer_render_mask_input(SeqRenderData context, int mask_input_type, Sequence *mask_sequence, Mask *mask_id, int cfra, int make_float)
+ImBuf *BKE_sequencer_render_mask_input(const SeqRenderData *context, int mask_input_type, Sequence *mask_sequence, Mask *mask_id, int cfra, int make_float)
{
ImBuf *mask_input = NULL;
@@ -1894,7 +1894,7 @@ void BKE_sequencer_color_balance_apply(StripColorBalance *cb, ImBuf *ibuf, float
* - Premultiply
*/
-int BKE_sequencer_input_have_to_preprocess(SeqRenderData UNUSED(context), Sequence *seq, float UNUSED(cfra))
+int BKE_sequencer_input_have_to_preprocess(const SeqRenderData *UNUSED(context), Sequence *seq, float UNUSED(cfra))
{
float mul;
@@ -1923,9 +1923,10 @@ int BKE_sequencer_input_have_to_preprocess(SeqRenderData UNUSED(context), Sequen
return FALSE;
}
-static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra, ImBuf *ibuf,
+static ImBuf *input_preprocess(const SeqRenderData *context, Sequence *seq, float cfra, ImBuf *ibuf,
int is_proxy_image, int is_preprocessed)
{
+ Scene *scene = context->scene;
float mul;
ibuf = IMB_makeSingleUser(ibuf);
@@ -1942,7 +1943,7 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
int sx, sy, dx, dy;
if (is_proxy_image) {
- double f = seq_rendersize_to_scale_factor(context.preview_render_size);
+ double f = seq_rendersize_to_scale_factor(context->preview_render_size);
if (f != 1.0) {
IMB_scalefastImBuf(ibuf, ibuf->x / f, ibuf->y / f);
@@ -1957,8 +1958,8 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
}
if (is_preprocessed) {
- double xscale = context.scene->r.xsch ? ((double)context.rectx / (double)context.scene->r.xsch) : 1.0;
- double yscale = context.scene->r.ysch ? ((double)context.recty / (double)context.scene->r.ysch) : 1.0;
+ double xscale = scene->r.xsch ? ((double)context->rectx / (double)scene->r.xsch) : 1.0;
+ double yscale = scene->r.ysch ? ((double)context->recty / (double)scene->r.ysch) : 1.0;
if (seq->flag & SEQ_USE_TRANSFORM) {
t.xofs *= xscale;
t.yofs *= yscale;
@@ -1976,12 +1977,12 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
if (seq->flag & SEQ_USE_TRANSFORM) {
if (is_preprocessed) {
- dx = context.rectx;
- dy = context.recty;
+ dx = context->rectx;
+ dy = context->recty;
}
else {
- dx = context.scene->r.xsch;
- dy = context.scene->r.ysch;
+ dx = scene->r.xsch;
+ dy = scene->r.ysch;
}
}
else {
@@ -1999,7 +2000,7 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
ImBuf *i = IMB_allocImBuf(dx, dy, 32, ibuf->rect_float ? IB_rectfloat : IB_rect);
IMB_rectcpy(i, ibuf, t.xofs, t.yofs, c.left, c.bottom, sx, sy);
- sequencer_imbuf_assign_spaces(context.scene, i);
+ sequencer_imbuf_assign_spaces(scene, i);
IMB_freeImBuf(ibuf);
@@ -2027,7 +2028,7 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
if (seq->flag & SEQ_MAKE_FLOAT) {
if (!ibuf->rect_float) {
- BKE_sequencer_imbuf_to_sequencer_space(context.scene, ibuf, TRUE);
+ BKE_sequencer_imbuf_to_sequencer_space(scene, ibuf, TRUE);
}
if (ibuf->rect) {
@@ -2039,12 +2040,12 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
multibuf(ibuf, mul);
}
- if (ibuf->x != context.rectx || ibuf->y != context.recty) {
- if (context.scene->r.mode & R_OSA) {
- IMB_scaleImBuf(ibuf, (short)context.rectx, (short)context.recty);
+ if (ibuf->x != context->rectx || ibuf->y != context->recty) {
+ if (scene->r.mode & R_OSA) {
+ IMB_scaleImBuf(ibuf, (short)context->rectx, (short)context->recty);
}
else {
- IMB_scalefastImBuf(ibuf, (short)context.rectx, (short)context.recty);
+ IMB_scalefastImBuf(ibuf, (short)context->rectx, (short)context->recty);
}
}
@@ -2060,7 +2061,7 @@ static ImBuf *input_preprocess(SeqRenderData context, Sequence *seq, float cfra,
return ibuf;
}
-static ImBuf *copy_from_ibuf_still(SeqRenderData context, Sequence *seq, float nr)
+static ImBuf *copy_from_ibuf_still(const SeqRenderData *context, Sequence *seq, float nr)
{
ImBuf *rval = NULL;
ImBuf *ibuf = NULL;
@@ -2080,7 +2081,7 @@ static ImBuf *copy_from_ibuf_still(SeqRenderData context, Sequence *seq, float n
return rval;
}
-static void copy_to_ibuf_still(SeqRenderData context, Sequence *seq, float nr, ImBuf *ibuf)
+static void copy_to_ibuf_still(const SeqRenderData *context, Sequence *seq, float nr, ImBuf *ibuf)
{
/* warning: ibuf may be NULL if the video fails to load */
if (nr == 0 || nr == seq->len - 1) {
@@ -2090,7 +2091,7 @@ static void copy_to_ibuf_still(SeqRenderData context, Sequence *seq, float nr, I
ibuf = IMB_dupImBuf(ibuf);
if (ibuf) {
- sequencer_imbuf_assign_spaces(context.scene, ibuf);
+ sequencer_imbuf_assign_spaces(context->scene, ibuf);
}
if (nr == 0) {
@@ -2109,7 +2110,7 @@ static void copy_to_ibuf_still(SeqRenderData context, Sequence *seq, float nr, I
typedef struct RenderEffectInitData {
struct SeqEffectHandle *sh;
- SeqRenderData context;
+ const SeqRenderData *context;
Sequence *seq;
float cfra, facf0, facf1;
ImBuf *ibuf1, *ibuf2, *ibuf3;
@@ -2119,7 +2120,7 @@ typedef struct RenderEffectInitData {
typedef struct RenderEffectThread {
struct SeqEffectHandle *sh;
- SeqRenderData context;
+ const SeqRenderData *context;
Sequence *seq;
float cfra, facf0, facf1;
ImBuf *ibuf1, *ibuf2, *ibuf3;
@@ -2160,7 +2161,7 @@ static void *render_effect_execute_do_thread(void *thread_data_v)
return NULL;
}
-static ImBuf *seq_render_effect_execute_threaded(struct SeqEffectHandle *sh, SeqRenderData context, Sequence *seq,
+static ImBuf *seq_render_effect_execute_threaded(struct SeqEffectHandle *sh, const SeqRenderData *context, Sequence *seq,
float cfra, float facf0, float facf1,
ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *ibuf3)
{
@@ -2184,8 +2185,9 @@ static ImBuf *seq_render_effect_execute_threaded(struct SeqEffectHandle *sh, Seq
return out;
}
-static ImBuf *seq_render_effect_strip_impl(SeqRenderData context, Sequence *seq, float cfra)
+static ImBuf *seq_render_effect_strip_impl(const SeqRenderData *context, Sequence *seq, float cfra)
{
+ Scene *scene = context->scene;
float fac, facf;
int early_out;
int i;
@@ -2201,21 +2203,21 @@ static ImBuf *seq_render_effect_strip_impl(SeqRenderData context, Sequence *seq,
if (!sh.execute && !(sh.execute_slice && sh.init_execution)) {
/* effect not supported in this version... */
- out = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rect);
+ out = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rect);
return out;
}
if (seq->flag & SEQ_USE_EFFECT_DEFAULT_FADE) {
sh.get_default_fac(seq, cfra, &fac, &facf);
- if ((context.scene->r.mode & R_FIELDS) == 0)
+ if ((scene->r.mode & R_FIELDS) == 0)
facf = fac;
}
else {
- fcu = id_data_find_fcurve(&context.scene->id, seq, &RNA_Sequence, "effect_fader", 0, NULL);
+ fcu = id_data_find_fcurve(&scene->id, seq, &RNA_Sequence, "effect_fader", 0, NULL);
if (fcu) {
fac = facf = evaluate_fcurve(fcu, cfra);
- if (context.scene->r.mode & R_FIELDS) {
+ if (scene->r.mode & R_FIELDS) {
facf = evaluate_fcurve(fcu, cfra + 0.5f);
}
}
@@ -2278,13 +2280,13 @@ static ImBuf *seq_render_effect_strip_impl(SeqRenderData context, Sequence *seq,
}
if (out == NULL) {
- out = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rect);
+ out = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rect);
}
return out;
}
-static ImBuf *seq_render_movieclip_strip(SeqRenderData context, Sequence *seq, float nr)
+static ImBuf *seq_render_movieclip_strip(const SeqRenderData *context, Sequence *seq, float nr)
{
ImBuf *ibuf = NULL;
MovieClipUser user;
@@ -2300,7 +2302,7 @@ static ImBuf *seq_render_movieclip_strip(SeqRenderData context, Sequence *seq, f
user.render_size = MCLIP_PROXY_RENDER_SIZE_FULL;
- switch (seq_rendersize_to_proxysize(context.preview_render_size)) {
+ switch (seq_rendersize_to_proxysize(context->preview_render_size)) {
case IMB_PROXY_NONE:
user.render_size = MCLIP_PROXY_RENDER_SIZE_FULL;
break;
@@ -2333,7 +2335,7 @@ static ImBuf *seq_render_movieclip_strip(SeqRenderData context, Sequence *seq, f
}
-static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short make_float)
+static ImBuf *seq_render_mask(const SeqRenderData *context, Mask *mask, float nr, short make_float)
{
/* TODO - add option to rasterize to alpha imbuf? */
ImBuf *ibuf = NULL;
@@ -2351,16 +2353,16 @@ static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short
BKE_mask_evaluate(mask_temp, mask->sfra + nr, true);
- maskbuf = MEM_mallocN(sizeof(float) * context.rectx * context.recty, __func__);
+ maskbuf = MEM_mallocN(sizeof(float) * context->rectx * context->recty, __func__);
mr_handle = BKE_maskrasterize_handle_new();
- BKE_maskrasterize_handle_init(mr_handle, mask_temp, context.rectx, context.recty, TRUE, TRUE, TRUE);
+ BKE_maskrasterize_handle_init(mr_handle, mask_temp, context->rectx, context->recty, TRUE, TRUE, TRUE);
BKE_mask_free_nolib(mask_temp);
MEM_freeN(mask_temp);
- BKE_maskrasterize_buffer(mr_handle, context.rectx, context.recty, maskbuf);
+ BKE_maskrasterize_buffer(mr_handle, context->rectx, context->recty, maskbuf);
BKE_maskrasterize_handle_free(mr_handle);
}
@@ -2371,11 +2373,11 @@ static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short
float *fp_src;
float *fp_dst;
- ibuf = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rectfloat);
+ ibuf = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rectfloat);
fp_src = maskbuf;
fp_dst = ibuf->rect_float;
- i = context.rectx * context.recty;
+ i = context->rectx * context->recty;
while (--i) {
fp_dst[0] = fp_dst[1] = fp_dst[2] = *fp_src;
fp_dst[3] = 1.0f;
@@ -2389,11 +2391,11 @@ static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short
float *fp_src;
unsigned char *ub_dst;
- ibuf = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rect);
+ ibuf = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rect);
fp_src = maskbuf;
ub_dst = (unsigned char *)ibuf->rect;
- i = context.rectx * context.recty;
+ i = context->rectx * context->recty;
while (--i) {
ub_dst[0] = ub_dst[1] = ub_dst[2] = (unsigned char)(*fp_src * 255.0f); /* already clamped */
ub_dst[3] = 255;
@@ -2408,14 +2410,14 @@ static ImBuf *seq_render_mask(SeqRenderData context, Mask *mask, float nr, short
return ibuf;
}
-static ImBuf *seq_render_mask_strip(SeqRenderData context, Sequence *seq, float nr)
+static ImBuf *seq_render_mask_strip(const SeqRenderData *context, Sequence *seq, float nr)
{
short make_float = seq->flag & SEQ_MAKE_FLOAT;
return seq_render_mask(context, seq->mask, nr, make_float);
}
-static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float nr)
+static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq, float nr)
{
ImBuf *ibuf = NULL;
float frame;
@@ -2457,8 +2459,8 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
const short is_rendering = G.is_rendering;
const short is_background = G.background;
const int do_seq_gl = is_rendering ?
- 0 /* (context.scene->r.seq_flag & R_SEQ_GL_REND) */ :
- (context.scene->r.seq_flag & R_SEQ_GL_PREV);
+ 0 /* (context->scene->r.seq_flag & R_SEQ_GL_REND) */ :
+ (context->scene->r.seq_flag & R_SEQ_GL_PREV);
int do_seq;
// int have_seq = FALSE; /* UNUSED */
int have_comp = FALSE;
@@ -2493,7 +2495,7 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
}
/* prevent eternal loop */
- do_seq = context.scene->r.scemode & R_DOSEQ;
+ do_seq = context->scene->r.scemode & R_DOSEQ;
scene->r.scemode &= ~R_DOSEQ;
#ifdef DURIAN_CAMERA_SWITCH
@@ -2508,13 +2510,13 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
char err_out[256] = "unknown";
/* for old scened this can be uninitialized,
* should probably be added to do_versions at some point if the functionality stays */
- if (context.scene->r.seq_prev_type == 0)
- context.scene->r.seq_prev_type = 3 /* == OB_SOLID */;
+ if (context->scene->r.seq_prev_type == 0)
+ context->scene->r.seq_prev_type = 3 /* == OB_SOLID */;
/* opengl offscreen render */
- BKE_scene_update_for_newframe(context.eval_ctx, context.bmain, scene, scene->lay);
- ibuf = sequencer_view3d_cb(scene, camera, context.rectx, context.recty, IB_rect,
- context.scene->r.seq_prev_type, context.scene->r.seq_flag & R_SEQ_SOLID_TEX,
+ BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
+ ibuf = sequencer_view3d_cb(scene, camera, context->rectx, context->recty, IB_rect,
+ context->scene->r.seq_prev_type, context->scene->r.seq_flag & R_SEQ_SOLID_TEX,
TRUE, scene->r.alphamode, err_out);
if (ibuf == NULL) {
fprintf(stderr, "seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
@@ -2536,8 +2538,8 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
if (re == NULL)
re = RE_NewRender(scene->id.name);
- BKE_scene_update_for_newframe(context.eval_ctx, context.bmain, scene, scene->lay);
- RE_BlenderFrame(re, context.bmain, scene, NULL, camera, scene->lay, frame, FALSE);
+ BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
+ RE_BlenderFrame(re, context->bmain, scene, NULL, camera, scene->lay, frame, FALSE);
/* restore previous state after it was toggled on & off by RE_BlenderFrame */
G.is_rendering = is_rendering;
@@ -2554,7 +2556,7 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
}
/* float buffers in the sequencer are not linear */
- BKE_sequencer_imbuf_to_sequencer_space(context.scene, ibuf, FALSE);
+ BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, FALSE);
}
else if (rres.rect32) {
ibuf = IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect);
@@ -2572,7 +2574,7 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
scene->r.cfra = oldcfra;
if (frame != oldcfra) {
- BKE_scene_update_for_newframe(context.eval_ctx, context.bmain, scene, scene->lay);
+ BKE_scene_update_for_newframe(context->eval_ctx, context->bmain, scene, scene->lay);
}
#ifdef DURIAN_CAMERA_SWITCH
@@ -2583,7 +2585,7 @@ static ImBuf *seq_render_scene_strip(SeqRenderData context, Sequence *seq, float
return ibuf;
}
-static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, float cfra)
+static ImBuf *do_render_strip_uncached(const SeqRenderData *context, Sequence *seq, float cfra)
{
ImBuf *ibuf = NULL;
float nr = give_stripelem_index(seq, cfra);
@@ -2620,7 +2622,7 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
float f_cfra;
SpeedControlVars *s = (SpeedControlVars *)seq->effectdata;
- BKE_sequence_effect_speed_rebuild_map(context.scene, seq, 0);
+ BKE_sequence_effect_speed_rebuild_map(context->scene, seq, 0);
/* weeek! */
f_cfra = seq->start + s->frameMap[(int)nr];
@@ -2666,7 +2668,7 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
imb_freerectImBuf(ibuf);
/* all sequencer color is done in SRGB space, linear gives odd crossfades */
- BKE_sequencer_imbuf_to_sequencer_space(context.scene, ibuf, FALSE);
+ BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, FALSE);
copy_to_ibuf_still(context, seq, nr, ibuf);
@@ -2685,10 +2687,10 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
ibuf = IMB_anim_absolute(seq->anim, nr + seq->anim_startofs,
seq->strip->proxy ? seq->strip->proxy->tc : IMB_TC_RECORD_RUN,
- seq_rendersize_to_proxysize(context.preview_render_size));
+ seq_rendersize_to_proxysize(context->preview_render_size));
if (ibuf) {
- BKE_sequencer_imbuf_to_sequencer_space(context.scene, ibuf, FALSE);
+ BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, FALSE);
/* we don't need both (speed reasons)! */
if (ibuf->rect_float && ibuf->rect) {
@@ -2709,7 +2711,7 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
ibuf = seq_render_scene_strip(context, seq, nr);
/* Scene strips update all animation, so we need to restore original state.*/
- BKE_animsys_evaluate_all_animation(context.bmain, context.scene, cfra);
+ BKE_animsys_evaluate_all_animation(context->bmain, context->scene, cfra);
copy_to_ibuf_still(context, seq, nr, ibuf);
break;
@@ -2726,7 +2728,7 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
ibuf = i;
if (ibuf->rect_float)
- BKE_sequencer_imbuf_to_sequencer_space(context.scene, ibuf, FALSE);
+ BKE_sequencer_imbuf_to_sequencer_space(context->scene, ibuf, FALSE);
copy_to_ibuf_still(context, seq, nr, ibuf);
}
@@ -2745,12 +2747,12 @@ static ImBuf *do_render_strip_uncached(SeqRenderData context, Sequence *seq, flo
}
if (ibuf)
- sequencer_imbuf_assign_spaces(context.scene, ibuf);
+ sequencer_imbuf_assign_spaces(context->scene, ibuf);
return ibuf;
}
-static ImBuf *seq_render_strip(SeqRenderData context, Sequence *seq, float cfra)
+static ImBuf *seq_render_strip(const SeqRenderData *context, Sequence *seq, float cfra)
{
ImBuf *ibuf = NULL;
int use_preprocess = FALSE;
@@ -2795,11 +2797,11 @@ static ImBuf *seq_render_strip(SeqRenderData context, Sequence *seq, float cfra)
}
if (ibuf == NULL) {
- ibuf = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rect);
- sequencer_imbuf_assign_spaces(context.scene, ibuf);
+ ibuf = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rect);
+ sequencer_imbuf_assign_spaces(context->scene, ibuf);
}
- if (ibuf->x != context.rectx || ibuf->y != context.recty)
+ if (ibuf->x != context->rectx || ibuf->y != context->recty)
use_preprocess = TRUE;
if (use_preprocess)
@@ -2847,7 +2849,7 @@ static int seq_get_early_out_for_blend_mode(Sequence *seq)
return early_out;
}
-static ImBuf *seq_render_strip_stack(SeqRenderData context, ListBase *seqbasep, float cfra, int chanshown)
+static ImBuf *seq_render_strip_stack(const SeqRenderData *context, ListBase *seqbasep, float cfra, int chanshown)
{
Sequence *seq_arr[MAXSEQ + 1];
int count;
@@ -2905,7 +2907,7 @@ static ImBuf *seq_render_strip_stack(SeqRenderData context, ListBase *seqbasep,
break;
case EARLY_USE_INPUT_1:
if (i == 0) {
- out = IMB_allocImBuf(context.rectx, context.recty, 32, IB_rect);
+ out = IMB_allocImBuf(context->rectx, context->recty, 32, IB_rect);
}
break;
case EARLY_DO_EFFECT:
@@ -2963,9 +2965,9 @@ static ImBuf *seq_render_strip_stack(SeqRenderData context, ListBase *seqbasep,
* you have to free after usage!
*/
-ImBuf *BKE_sequencer_give_ibuf(SeqRenderData context, float cfra, int chanshown)
+ImBuf *BKE_sequencer_give_ibuf(const SeqRenderData *context, float cfra, int chanshown)
{
- Editing *ed = BKE_sequencer_editing_get(context.scene, FALSE);
+ Editing *ed = BKE_sequencer_editing_get(context->scene, FALSE);
int count;
ListBase *seqbasep;
@@ -2983,13 +2985,13 @@ ImBuf *BKE_sequencer_give_ibuf(SeqRenderData context, float cfra, int chanshown)
return seq_render_strip_stack(context, seqbasep, cfra, chanshown);
}
-ImBuf *BKE_sequencer_give_ibuf_seqbase(SeqRenderData context, float cfra, int chanshown, ListBase *seqbasep)
+ImBuf *BKE_sequencer_give_ibuf_seqbase(const SeqRenderData *context, float cfra, int chanshown, ListBase *seqbasep)
{
return seq_render_strip_stack(context, seqbasep, cfra, chanshown);
}
-ImBuf *BKE_sequencer_give_ibuf_direct(SeqRenderData context, float cfra, Sequence *seq)
+ImBuf *BKE_sequencer_give_ibuf_direct(const SeqRenderData *context, float cfra, Sequence *seq)
{
return seq_render_strip(context, seq, cfra);
}
@@ -3038,7 +3040,7 @@ typedef struct PrefetchQueueElem {
ImBuf *ibuf;
} PrefetchQueueElem;
-void BKE_sequencer_give_ibuf_prefetch_request(SeqRenderData context, float cfra, int chanshown)
+void BKE_sequencer_give_ibuf_prefetch_request(const SeqRenderData *context, float cfra, int chanshown)
{
PrefetchQueueElem *e;
if (seq_thread_shutdown) {
@@ -3046,11 +3048,11 @@ void BKE_sequencer_give_ibuf_prefetch_request(SeqRenderData context, float cfra,
}
e = MEM_callocN(sizeof(PrefetchQueueElem), "prefetch_queue_elem");
- e->rectx = context.rectx;
- e->recty = context.recty;
+ e->rectx = context->rectx;
+ e->recty = context->recty;
e->cfra = cfra;
e->chanshown = chanshown;
- e->preview_render_size = context.preview_render_size;
+ e->preview_render_size = context->preview_render_size;
e->monoton_cfra = monoton_cfra++;
pthread_mutex_lock(&queue_lock);
@@ -3062,7 +3064,7 @@ void BKE_sequencer_give_ibuf_prefetch_request(SeqRenderData context, float cfra,
pthread_mutex_unlock(&wakeup_lock);
}
-ImBuf *BKE_sequencer_give_ibuf_threaded(SeqRenderData context, float cfra, int chanshown)
+ImBuf *BKE_sequencer_give_ibuf_threaded(const SeqRenderData *context, float cfra, int chanshown)
{
PrefetchQueueElem *e = NULL;
int found_something = FALSE;
@@ -3078,9 +3080,9 @@ ImBuf *BKE_sequencer_give_ibuf_threaded(SeqRenderData context, float cfra, int c
for (e = prefetch_done.first; e; e = e->next) {
if (cfra == e->cfra &&
chanshown == e->chanshown &&
- context.rectx == e->rectx &&
- context.recty == e->recty &&
- context.preview_render_size == e->preview_render_size)
+ context->rectx == e->rectx &&
+ context->recty == e->recty &&
+ context->preview_render_size == e->preview_render_size)
{
success = TRUE;
found_something = TRUE;
@@ -3092,9 +3094,9 @@ ImBuf *BKE_sequencer_give_ibuf_threaded(SeqRenderData context, float cfra, int c
for (e = prefetch_wait.first; e; e = e->next) {
if (cfra == e->cfra &&
chanshown == e->chanshown &&
- context.rectx == e->rectx &&
- context.recty == e->recty &&
- context.preview_render_size == e->preview_render_size)
+ context->rectx == e->rectx &&
+ context->recty == e->recty &&
+ context->preview_render_size == e->preview_render_size)
{
found_something = TRUE;
break;
@@ -3112,9 +3114,9 @@ ImBuf *BKE_sequencer_give_ibuf_threaded(SeqRenderData context, float cfra, int c
if (tslot->current &&
cfra == tslot->current->cfra &&
chanshown == tslot->current->chanshown &&
- context.rectx == tslot->current->rectx &&
- context.recty == tslot->current->recty &&
- context.preview_render_size == tslot->current->preview_render_size)
+ context->rectx == tslot->current->rectx &&
+ context->recty == tslot->current->recty &&
+ context->preview_render_size == tslot->current->preview_render_size)
{
found_something = TRUE;
break;