diff --git a/source/blender/sequencer/SEQ_effects.hh b/source/blender/sequencer/SEQ_effects.hh index 7c9f93cc3ad..9522c0ed592 100644 --- a/source/blender/sequencer/SEQ_effects.hh +++ b/source/blender/sequencer/SEQ_effects.hh @@ -70,10 +70,9 @@ struct SeqEffectHandle { float timeline_frame, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3); + ImBuf *ibuf2); - ImBuf *(*init_execution)(const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *ibuf3); + ImBuf *(*init_execution)(const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2); void (*execute_slice)(const SeqRenderData *context, Sequence *seq, @@ -81,7 +80,6 @@ struct SeqEffectHandle { float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf *ibuf3, int start_line, int total_lines, ImBuf *out); diff --git a/source/blender/sequencer/intern/effects.cc b/source/blender/sequencer/intern/effects.cc index 36558619c88..d0d2171ac31 100644 --- a/source/blender/sequencer/intern/effects.cc +++ b/source/blender/sequencer/intern/effects.cc @@ -71,12 +71,10 @@ static SeqEffectHandle get_sequence_effect_impl(int seq_type); static void slice_get_byte_buffers(const SeqRenderData *context, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf *ibuf3, const ImBuf *out, int start_line, uchar **rect1, uchar **rect2, - uchar **rect3, uchar **rect_out) { int offset = 4 * start_line * context->rectx; @@ -87,21 +85,15 @@ static void slice_get_byte_buffers(const SeqRenderData *context, if (ibuf2) { *rect2 = ibuf2->byte_buffer.data + offset; } - - if (ibuf3) { - *rect3 = ibuf3->byte_buffer.data + offset; - } } static void slice_get_float_buffers(const SeqRenderData *context, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf *ibuf3, const ImBuf *out, int start_line, float **rect1, float **rect2, - float **rect3, float **rect_out) { int offset = 4 * start_line * context->rectx; @@ -112,10 +104,6 @@ static void slice_get_float_buffers(const SeqRenderData *context, if (ibuf2) { *rect2 = ibuf2->float_buffer.data + offset; } - - if (ibuf3) { - *rect3 = ibuf3->float_buffer.data + offset; - } } static float4 load_premul_pixel(const uchar *ptr) @@ -165,7 +153,6 @@ static void store_opaque_black_pixel(float *dst) static ImBuf *prepare_effect_imbufs(const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2, - ImBuf *ibuf3, bool uninitialized_pixels = true) { ImBuf *out; @@ -174,15 +161,12 @@ static ImBuf *prepare_effect_imbufs(const SeqRenderData *context, int y = context->recty; int base_flags = uninitialized_pixels ? IB_uninitialized_pixels : 0; - if (!ibuf1 && !ibuf2 && !ibuf3) { + if (!ibuf1 && !ibuf2) { /* hmmm, global float option ? */ out = IMB_allocImBuf(x, y, 32, IB_rect | base_flags); } - else if ((ibuf1 && ibuf1->float_buffer.data) || (ibuf2 && ibuf2->float_buffer.data) || - (ibuf3 && ibuf3->float_buffer.data)) - { - /* if any inputs are rectfloat, output is float too */ - + else if ((ibuf1 && ibuf1->float_buffer.data) || (ibuf2 && ibuf2->float_buffer.data)) { + /* if any inputs are float, output is float too */ out = IMB_allocImBuf(x, y, 32, IB_rectfloat | base_flags); } else { @@ -198,10 +182,6 @@ static ImBuf *prepare_effect_imbufs(const SeqRenderData *context, seq_imbuf_to_sequencer_space(scene, ibuf2, true); } - if (ibuf3 && !ibuf3->float_buffer.data) { - seq_imbuf_to_sequencer_space(scene, ibuf3, true); - } - IMB_colormanagement_assign_float_colorspace(out, scene->sequencer_colorspace_settings.name); } else { @@ -212,14 +192,10 @@ static ImBuf *prepare_effect_imbufs(const SeqRenderData *context, if (ibuf2 && !ibuf2->byte_buffer.data) { IMB_rect_from_float(ibuf2); } - - if (ibuf3 && !ibuf3->byte_buffer.data) { - IMB_rect_from_float(ibuf3); - } } /* If effect only affecting a single channel, forward input's metadata to the output. */ - if (ibuf1 != nullptr && ibuf1 == ibuf2 && ibuf2 == ibuf3) { + if (ibuf1 != nullptr && ibuf1 == ibuf2) { IMB_metadata_copy(out, ibuf1); } @@ -289,7 +265,6 @@ static void do_alphaover_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -297,16 +272,14 @@ static void do_alphaover_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_alphaover_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_alphaover_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -354,7 +327,6 @@ static void do_alphaunder_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -362,16 +334,14 @@ static void do_alphaunder_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_alphaunder_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_alphaunder_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -434,7 +404,6 @@ static void do_cross_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -442,16 +411,14 @@ static void do_cross_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_cross_effect_float(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_cross_effect_byte(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -503,22 +470,12 @@ static void do_gammacross_effect( } } -static ImBuf *gammacross_init_execution(const SeqRenderData *context, - ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) -{ - ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2, ibuf3); - return out; -} - static void do_gammacross_effect(const SeqRenderData *context, Sequence * /*seq*/, float /*timeline_frame*/, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -526,16 +483,14 @@ static void do_gammacross_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_gammacross_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_gammacross_effect(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -597,7 +552,6 @@ static void do_add_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -605,16 +559,14 @@ static void do_add_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_add_effect_float(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_add_effect_byte(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -678,7 +630,6 @@ static void do_sub_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -686,16 +637,14 @@ static void do_sub_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_sub_effect_float(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_sub_effect_byte(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -839,7 +788,6 @@ static void do_mul_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -847,16 +795,14 @@ static void do_mul_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_mul_effect_float(fac, context->rectx, total_lines, rect1, rect2, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_mul_effect_byte(fac, context->rectx, total_lines, rect1, rect2, rect_out); } @@ -1037,22 +983,19 @@ static void do_blend_mode_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) { if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_blend_effect_float( fac, context->rectx, total_lines, rect1, rect2, seq->blend_mode, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_blend_effect_byte( fac, context->rectx, total_lines, rect1, rect2, seq->blend_mode, rect_out); } @@ -1083,7 +1026,6 @@ static void do_colormix_effect(const SeqRenderData *context, float /*fac*/, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -1095,15 +1037,13 @@ static void do_colormix_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_blend_effect_float( fac, context->rectx, total_lines, rect1, rect2, data->blend_effect, rect_out); } else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_blend_effect_byte( fac, context->rectx, total_lines, rect1, rect2, data->blend_effect, rect_out); } @@ -1457,10 +1397,9 @@ static ImBuf *do_wipe_effect(const SeqRenderData *context, float /*timeline_frame*/, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) + ImBuf *ibuf2) { - ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2, ibuf3); + ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2); if (out->float_buffer.data) { do_wipe_effect(seq, @@ -1607,7 +1546,6 @@ static void do_transform_effect(const SeqRenderData *context, float /*fac*/, const ImBuf *ibuf1, const ImBuf * /*ibuf2*/, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -1874,10 +1812,9 @@ static ImBuf *do_glow_effect(const SeqRenderData *context, float /*timeline_frame*/, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) + ImBuf *ibuf2) { - ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2, ibuf3); + ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2); int render_size = 100 * context->rectx / context->scene->r.xsch; @@ -1950,11 +1887,10 @@ static ImBuf *do_solid_color(const SeqRenderData *context, float /*timeline_frame*/, float /*fac*/, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) + ImBuf *ibuf2) { using namespace blender; - ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2, ibuf3); + ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2); SolidColorVars *cv = (SolidColorVars *)seq->effectdata; @@ -2016,8 +1952,7 @@ static ImBuf *do_multicam(const SeqRenderData *context, float timeline_frame, float /*fac*/, ImBuf * /*ibuf1*/, - ImBuf * /*ibuf2*/, - ImBuf * /*ibuf3*/) + ImBuf * /*ibuf2*/) { ImBuf *out; Editing *ed; @@ -2103,8 +2038,7 @@ static ImBuf *do_adjustment(const SeqRenderData *context, float timeline_frame, float /*fac*/, ImBuf * /*ibuf1*/, - ImBuf * /*ibuf2*/, - ImBuf * /*ibuf3*/) + ImBuf * /*ibuf2*/) { ImBuf *out; Editing *ed; @@ -2294,8 +2228,7 @@ static ImBuf *do_speed_effect(const SeqRenderData *context, float timeline_frame, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) + ImBuf *ibuf2) { SpeedControlVars *s = (SpeedControlVars *)seq->effectdata; SeqEffectHandle cross_effect = get_sequence_effect_impl(SEQ_TYPE_CROSS); @@ -2305,7 +2238,7 @@ static ImBuf *do_speed_effect(const SeqRenderData *context, fac = speed_effect_interpolation_ratio_get(context->scene, seq, timeline_frame); /* Current frame is ibuf1, next frame is ibuf2. */ out = seq_render_effect_execute_threaded( - &cross_effect, context, nullptr, timeline_frame, fac, ibuf1, ibuf2, ibuf3); + &cross_effect, context, nullptr, timeline_frame, fac, ibuf1, ibuf2); return out; } @@ -2325,7 +2258,6 @@ static void do_overdrop_effect(const SeqRenderData *context, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, - const ImBuf * /*ibuf3*/, int start_line, int total_lines, ImBuf *out) @@ -2336,8 +2268,7 @@ static void do_overdrop_effect(const SeqRenderData *context, if (out->float_buffer.data) { float *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_float_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_float_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_drop_effect_float(fac, x, y, rect1, rect2, rect_out); do_alphaover_effect(fac, x, y, rect1, rect2, rect_out); @@ -2345,8 +2276,7 @@ static void do_overdrop_effect(const SeqRenderData *context, else { uchar *rect1 = nullptr, *rect2 = nullptr, *rect_out = nullptr; - slice_get_byte_buffers( - context, ibuf1, ibuf2, nullptr, out, start_line, &rect1, &rect2, nullptr, &rect_out); + slice_get_byte_buffers(context, ibuf1, ibuf2, out, start_line, &rect1, &rect2, &rect_out); do_drop_effect_byte(fac, x, y, rect1, rect2, rect_out); do_alphaover_effect(fac, x, y, rect1, rect2, rect_out); @@ -2485,8 +2415,7 @@ static ImBuf *do_gaussian_blur_effect(const SeqRenderData *context, float /*timeline_frame*/, float /*fac*/, ImBuf *ibuf1, - ImBuf * /*ibuf2*/, - ImBuf * /*ibuf3*/) + ImBuf * /*ibuf2*/) { using namespace blender; @@ -2502,7 +2431,7 @@ static ImBuf *do_gaussian_blur_effect(const SeqRenderData *context, const bool is_float = ibuf1->float_buffer.data; /* Horizontal blur: create output, blur ibuf1 into it. */ - ImBuf *out = prepare_effect_imbufs(context, ibuf1, nullptr, nullptr); + ImBuf *out = prepare_effect_imbufs(context, ibuf1, nullptr); threading::parallel_for(IndexRange(context->recty), 32, [&](const IndexRange y_range) { const int y_first = y_range.first(); const int y_size = y_range.size(); @@ -2530,7 +2459,7 @@ static ImBuf *do_gaussian_blur_effect(const SeqRenderData *context, /* Vertical blur: create output, blur previous output into it. */ ibuf1 = out; - out = prepare_effect_imbufs(context, ibuf1, nullptr, nullptr); + out = prepare_effect_imbufs(context, ibuf1, nullptr); threading::parallel_for(IndexRange(context->recty), 32, [&](const IndexRange y_range) { const int y_first = y_range.first(); const int y_size = y_range.size(); @@ -3131,12 +3060,11 @@ static ImBuf *do_text_effect(const SeqRenderData *context, float /*timeline_frame*/, float /*fac*/, ImBuf * /*ibuf1*/, - ImBuf * /*ibuf2*/, - ImBuf * /*ibuf3*/) + ImBuf * /*ibuf2*/) { /* NOTE: text rasterization only fills in part of output image, * need to clear it. */ - ImBuf *out = prepare_effect_imbufs(context, nullptr, nullptr, nullptr, false); + ImBuf *out = prepare_effect_imbufs(context, nullptr, nullptr, false); TextVars *data = static_cast(seq->effectdata); const int width = out->x; const int height = out->y; @@ -3322,13 +3250,9 @@ static void get_default_fac_fade(const Scene *scene, *fac = math::clamp(*fac, 0.0f, 1.0f); } -static ImBuf *init_execution(const SeqRenderData *context, - ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) +static ImBuf *init_execution(const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2) { - ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2, ibuf3); - + ImBuf *out = prepare_effect_imbufs(context, ibuf1, ibuf2); return out; } @@ -3361,7 +3285,6 @@ static SeqEffectHandle get_sequence_effect_impl(int seq_type) rval.multithreaded = true; rval.early_out = early_out_fade; rval.get_default_fac = get_default_fac_fade; - rval.init_execution = gammacross_init_execution; rval.execute_slice = do_gammacross_effect; break; case SEQ_TYPE_ADD: diff --git a/source/blender/sequencer/intern/render.cc b/source/blender/sequencer/intern/render.cc index 6565e401e94..44467452954 100644 --- a/source/blender/sequencer/intern/render.cc +++ b/source/blender/sequencer/intern/render.cc @@ -757,7 +757,7 @@ struct RenderEffectInitData { const SeqRenderData *context; Sequence *seq; float timeline_frame, fac; - ImBuf *ibuf1, *ibuf2, *ibuf3; + ImBuf *ibuf1, *ibuf2; ImBuf *out; }; @@ -767,7 +767,7 @@ struct RenderEffectThread { const SeqRenderData *context; Sequence *seq; float timeline_frame, fac; - ImBuf *ibuf1, *ibuf2, *ibuf3; + ImBuf *ibuf1, *ibuf2; ImBuf *out; int start_line, tot_line; @@ -788,7 +788,6 @@ static void render_effect_execute_init_handle(void *handle_v, handle->fac = init_data->fac; handle->ibuf1 = init_data->ibuf1; handle->ibuf2 = init_data->ibuf2; - handle->ibuf3 = init_data->ibuf3; handle->out = init_data->out; handle->start_line = start_line; @@ -805,7 +804,6 @@ static void *render_effect_execute_do_thread(void *thread_data_v) thread_data->fac, thread_data->ibuf1, thread_data->ibuf2, - thread_data->ibuf3, thread_data->start_line, thread_data->tot_line, thread_data->out); @@ -819,11 +817,10 @@ ImBuf *seq_render_effect_execute_threaded(SeqEffectHandle *sh, float timeline_frame, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3) + ImBuf *ibuf2) { RenderEffectInitData init_data; - ImBuf *out = sh->init_execution(context, ibuf1, ibuf2, ibuf3); + ImBuf *out = sh->init_execution(context, ibuf1, ibuf2); init_data.sh = sh; init_data.context = context; @@ -832,7 +829,6 @@ ImBuf *seq_render_effect_execute_threaded(SeqEffectHandle *sh, init_data.fac = fac; init_data.ibuf1 = ibuf1; init_data.ibuf2 = ibuf2; - init_data.ibuf3 = ibuf3; init_data.out = out; IMB_processor_apply_threaded(out->y, @@ -854,15 +850,14 @@ static ImBuf *seq_render_effect_strip_impl(const SeqRenderData *context, int i; SeqEffectHandle sh = SEQ_effect_handle_get(seq); const FCurve *fcu = nullptr; - ImBuf *ibuf[3]; - Sequence *input[3]; + ImBuf *ibuf[2]; + Sequence *input[2]; ImBuf *out = nullptr; - ibuf[0] = ibuf[1] = ibuf[2] = nullptr; + ibuf[0] = ibuf[1] = nullptr; input[0] = seq->seq1; input[1] = seq->seq2; - input[2] = seq->seq3; if (!sh.execute && !(sh.execute_slice && sh.init_execution)) { /* effect not supported in this version... */ @@ -887,10 +882,10 @@ static ImBuf *seq_render_effect_strip_impl(const SeqRenderData *context, switch (early_out) { case StripEarlyOut::NoInput: - out = sh.execute(context, seq, timeline_frame, fac, nullptr, nullptr, nullptr); + out = sh.execute(context, seq, timeline_frame, fac, nullptr, nullptr); break; case StripEarlyOut::DoEffect: - for (i = 0; i < 3; i++) { + for (i = 0; i < 2; i++) { /* Speed effect requires time remapping of `timeline_frame` for input(s). */ if (input[0] && seq->type == SEQ_TYPE_SPEED) { int target_frame = floor( @@ -907,10 +902,10 @@ static ImBuf *seq_render_effect_strip_impl(const SeqRenderData *context, if (ibuf[0] && (ibuf[1] || SEQ_effect_get_num_inputs(seq->type) == 1)) { if (sh.multithreaded) { out = seq_render_effect_execute_threaded( - &sh, context, seq, timeline_frame, fac, ibuf[0], ibuf[1], ibuf[2]); + &sh, context, seq, timeline_frame, fac, ibuf[0], ibuf[1]); } else { - out = sh.execute(context, seq, timeline_frame, fac, ibuf[0], ibuf[1], ibuf[2]); + out = sh.execute(context, seq, timeline_frame, fac, ibuf[0], ibuf[1]); } } break; @@ -926,7 +921,7 @@ static ImBuf *seq_render_effect_strip_impl(const SeqRenderData *context, break; } - for (i = 0; i < 3; i++) { + for (i = 0; i < 2; i++) { IMB_freeImBuf(ibuf[i]); } @@ -1925,19 +1920,19 @@ static ImBuf *seq_render_strip_stack_apply_effect( if (swap_input) { if (sh.multithreaded) { out = seq_render_effect_execute_threaded( - &sh, context, seq, timeline_frame, fac, ibuf2, ibuf1, nullptr); + &sh, context, seq, timeline_frame, fac, ibuf2, ibuf1); } else { - out = sh.execute(context, seq, timeline_frame, fac, ibuf2, ibuf1, nullptr); + out = sh.execute(context, seq, timeline_frame, fac, ibuf2, ibuf1); } } else { if (sh.multithreaded) { out = seq_render_effect_execute_threaded( - &sh, context, seq, timeline_frame, fac, ibuf1, ibuf2, nullptr); + &sh, context, seq, timeline_frame, fac, ibuf1, ibuf2); } else { - out = sh.execute(context, seq, timeline_frame, fac, ibuf1, ibuf2, nullptr); + out = sh.execute(context, seq, timeline_frame, fac, ibuf1, ibuf2); } } diff --git a/source/blender/sequencer/intern/render.hh b/source/blender/sequencer/intern/render.hh index c680d6b9c24..265d88821cc 100644 --- a/source/blender/sequencer/intern/render.hh +++ b/source/blender/sequencer/intern/render.hh @@ -34,8 +34,7 @@ ImBuf *seq_render_effect_execute_threaded(SeqEffectHandle *sh, float timeline_frame, float fac, ImBuf *ibuf1, - ImBuf *ibuf2, - ImBuf *ibuf3); + ImBuf *ibuf2); void seq_imbuf_to_sequencer_space(const Scene *scene, ImBuf *ibuf, bool make_float); blender::Vector seq_get_shown_sequences( const Scene *scene, ListBase *channels, ListBase *seqbase, int timeline_frame, int chanshown);