Blender V4.3
effects.cc File Reference
#include <cmath>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_array.hh"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.hh"
#include "BLI_math_vector_types.hh"
#include "BLI_path_utils.hh"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_task.hh"
#include "BLI_threads.h"
#include "BLI_utildefines.h"
#include "DNA_packedFile_types.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "DNA_space_types.h"
#include "DNA_vfont_types.h"
#include "BKE_fcurve.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "IMB_colormanagement.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "IMB_interp.hh"
#include "IMB_metadata.hh"
#include "BLI_math_color_blend.h"
#include "RNA_prototypes.hh"
#include "RE_pipeline.h"
#include "SEQ_channels.hh"
#include "SEQ_effects.hh"
#include "SEQ_proxy.hh"
#include "SEQ_relations.hh"
#include "SEQ_render.hh"
#include "SEQ_time.hh"
#include "SEQ_utils.hh"
#include "BLF_api.hh"
#include "effects.hh"
#include "render.hh"

Go to the source code of this file.

Classes

struct  WipeZone
 
struct  JFACoord
 

Functions

Sequence Effect Factory
static SeqEffectHandle get_sequence_effect_impl (int seq_type)
 
static void init_noop (Sequence *)
 
static void load_noop (Sequence *)
 
static void free_noop (Sequence *, const bool)
 
static int num_inputs_default ()
 
static void copy_effect_default (Sequence *dst, const Sequence *src, const int)
 
static void free_effect_default (Sequence *seq, const bool)
 
static StripEarlyOut early_out_noop (const Sequence *, float)
 
static StripEarlyOut early_out_fade (const Sequence *, float fac)
 
static StripEarlyOut early_out_mul_input2 (const Sequence *, float fac)
 
static StripEarlyOut early_out_mul_input1 (const Sequence *, float fac)
 
static void get_default_fac_noop (const Scene *, const Sequence *, float, float *fac)
 
static void get_default_fac_fade (const Scene *scene, const Sequence *seq, float timeline_frame, float *fac)
 
static ImBufinit_execution (const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2)
 
Internal Utilities
static void slice_get_byte_buffers (const SeqRenderData *context, const ImBuf *ibuf1, const ImBuf *ibuf2, const ImBuf *out, int start_line, uchar **rect1, uchar **rect2, uchar **rect_out)
 
static void slice_get_float_buffers (const SeqRenderData *context, const ImBuf *ibuf1, const ImBuf *ibuf2, const ImBuf *out, int start_line, float **rect1, float **rect2, float **rect_out)
 
static float4 load_premul_pixel (const uchar *ptr)
 
static float4 load_premul_pixel (const float *ptr)
 
static void store_premul_pixel (const float4 &pix, uchar *dst)
 
static void store_premul_pixel (const float4 &pix, float *dst)
 
static void store_opaque_black_pixel (uchar *dst)
 
static void store_opaque_black_pixel (float *dst)
 
Glow Effect
static ImBufprepare_effect_imbufs (const SeqRenderData *context, ImBuf *ibuf1, ImBuf *ibuf2, bool uninitialized_pixels=true)
 
static void glow_blur_bitmap (const float4 *src, float4 *map, int width, int height, float blur, int quality)
 
static void blur_isolate_highlights (const float4 *in, float4 *out, int width, int height, float threshold, float boost, float clamp)
 
static void init_glow_effect (Sequence *seq)
 
static int num_inputs_glow ()
 
static void free_glow_effect (Sequence *seq, const bool)
 
static void copy_glow_effect (Sequence *dst, const Sequence *src, const int)
 
static void do_glow_effect_byte (Sequence *seq, int render_size, float fac, int x, int y, uchar *rect1, uchar *, uchar *out)
 
static void do_glow_effect_float (Sequence *seq, int render_size, float fac, int x, int y, float *rect1, float *, float *out)
 
static ImBufdo_glow_effect (const SeqRenderData *context, Sequence *seq, float, float fac, ImBuf *ibuf1, ImBuf *ibuf2)
 
Alpha Over Effect
static void init_alpha_over_or_under (Sequence *seq)
 
static bool alpha_opaque (uchar alpha)
 
static bool alpha_opaque (float alpha)
 
template<typename T >
static void do_alphaover_effect (float fac, int width, int height, const T *src1, const T *src2, T *dst)
 
static void do_alphaover_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Alpha Under Effect
template<typename T >
static void do_alphaunder_effect (float fac, int width, int height, const T *src1, const T *src2, T *dst)
 
static void do_alphaunder_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Cross Effect
static void do_cross_effect_byte (float fac, int x, int y, uchar *rect1, uchar *rect2, uchar *out)
 
static void do_cross_effect_float (float fac, int x, int y, float *rect1, float *rect2, float *out)
 
static void do_cross_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Gamma Cross
static float gammaCorrect (float c)
 
static float invGammaCorrect (float c)
 
template<typename T >
static void do_gammacross_effect (float fac, int width, int height, const T *src1, const T *src2, T *dst)
 
static void do_gammacross_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Color Add Effect
static void do_add_effect_byte (float fac, int x, int y, uchar *rect1, uchar *rect2, uchar *out)
 
static void do_add_effect_float (float fac, int x, int y, float *rect1, float *rect2, float *out)
 
static void do_add_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Color Subtract Effect
static void do_sub_effect_byte (float fac, int x, int y, uchar *rect1, uchar *rect2, uchar *out)
 
static void do_sub_effect_float (float fac, int x, int y, float *rect1, float *rect2, float *out)
 
static void do_sub_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Multiply Effect
static void do_mul_effect_byte (float fac, int x, int y, uchar *rect1, uchar *rect2, uchar *out)
 
static void do_mul_effect_float (float fac, int x, int y, float *rect1, float *rect2, float *out)
 
static void do_mul_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Blend Mode Effect
template<typename T , typename Func >
static void apply_blend_function (float fac, int width, int height, const T *src1, T *src2, T *dst, Func blend_function)
 
static void do_blend_effect_float (float fac, int x, int y, const float *rect1, float *rect2, int btype, float *out)
 
static void do_blend_effect_byte (float fac, int x, int y, const uchar *rect1, uchar *rect2, int btype, uchar *out)
 
static void do_blend_mode_effect (const SeqRenderData *context, Sequence *seq, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Color Mix Effect
static void init_colormix_effect (Sequence *seq)
 
static void do_colormix_effect (const SeqRenderData *context, Sequence *seq, float, float, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Wipe Effect
static WipeZone precalc_wipe_zone (const WipeVars *wipe, int xo, int yo)
 
static float in_band (float width, float dist, int side, int dir)
 
static float check_zone (const WipeZone *wipezone, int x, int y, float fac)
 
static void init_wipe_effect (Sequence *seq)
 
static int num_inputs_wipe ()
 
static void free_wipe_effect (Sequence *seq, const bool)
 
static void copy_wipe_effect (Sequence *dst, const Sequence *src, const int)
 
template<typename T >
static void do_wipe_effect (const Sequence *seq, float fac, int width, int height, const T *rect1, const T *rect2, T *out)
 
static ImBufdo_wipe_effect (const SeqRenderData *context, Sequence *seq, float, float fac, ImBuf *ibuf1, ImBuf *ibuf2)
 
Transform Effect
static void init_transform_effect (Sequence *seq)
 
static int num_inputs_transform ()
 
static void free_transform_effect (Sequence *seq, const bool)
 
static void copy_transform_effect (Sequence *dst, const Sequence *src, const int)
 
static void transform_image (int x, int y, int start_line, int total_lines, const ImBuf *ibuf, ImBuf *out, float scale_x, float scale_y, float translate_x, float translate_y, float rotate, int interpolation)
 
static void do_transform_effect (const SeqRenderData *context, Sequence *seq, float, float, const ImBuf *ibuf1, const ImBuf *, int start_line, int total_lines, ImBuf *out)
 
Solid Color Effect
static void init_solid_color (Sequence *seq)
 
static int num_inputs_color ()
 
static void free_solid_color (Sequence *seq, const bool)
 
static void copy_solid_color (Sequence *dst, const Sequence *src, const int)
 
static StripEarlyOut early_out_color (const Sequence *, float)
 
static ImBufdo_solid_color (const SeqRenderData *context, Sequence *seq, float, float, ImBuf *ibuf1, ImBuf *ibuf2)
 
Multi-Camera Effect
static int num_inputs_multicam ()
 
static StripEarlyOut early_out_multicam (const Sequence *, float)
 
static ImBufdo_multicam (const SeqRenderData *context, Sequence *seq, float timeline_frame, float, ImBuf *, ImBuf *)
 
Adjustment Effect
static int num_inputs_adjustment ()
 
static StripEarlyOut early_out_adjustment (const Sequence *, float)
 
static ImBufdo_adjustment_impl (const SeqRenderData *context, Sequence *seq, float timeline_frame)
 
static ImBufdo_adjustment (const SeqRenderData *context, Sequence *seq, float timeline_frame, float, ImBuf *, ImBuf *)
 
Speed Effect
static void init_speed_effect (Sequence *seq)
 
static void load_speed_effect (Sequence *seq)
 
static int num_inputs_speed ()
 
static void free_speed_effect (Sequence *seq, const bool)
 
static void copy_speed_effect (Sequence *dst, const Sequence *src, const int)
 
static StripEarlyOut early_out_speed (const Sequence *, float)
 
static FCurveseq_effect_speed_speed_factor_curve_get (Scene *scene, Sequence *seq)
 
void seq_effect_speed_rebuild_map (Scene *scene, Sequence *seq)
 
static void seq_effect_speed_frame_map_ensure (Scene *scene, Sequence *seq)
 
float seq_speed_effect_target_frame_get (Scene *scene, Sequence *seq_speed, float timeline_frame, int input)
 
static float speed_effect_interpolation_ratio_get (Scene *scene, Sequence *seq_speed, float timeline_frame)
 
static ImBufdo_speed_effect (const SeqRenderData *context, Sequence *seq, float timeline_frame, float fac, ImBuf *ibuf1, ImBuf *ibuf2)
 
Over-Drop Effect
static void do_overdrop_effect (const SeqRenderData *context, Sequence *, float, float fac, const ImBuf *ibuf1, const ImBuf *ibuf2, int start_line, int total_lines, ImBuf *out)
 
Gaussian Blur
static void init_gaussian_blur_effect (Sequence *seq)
 
static int num_inputs_gaussian_blur ()
 
static void free_gaussian_blur_effect (Sequence *seq, const bool)
 
static void copy_gaussian_blur_effect (Sequence *dst, const Sequence *src, const int)
 
static StripEarlyOut early_out_gaussian_blur (const Sequence *seq, float)
 
static Array< floatmake_gaussian_blur_kernel (float rad, int size)
 
template<typename T >
static void gaussian_blur_x (const Span< float > gaussian, int half_size, int start_line, int width, int height, int, const T *rect, T *dst)
 
template<typename T >
static void gaussian_blur_y (const Span< float > gaussian, int half_size, int start_line, int width, int height, int frame_height, const T *rect, T *dst)
 
static ImBufdo_gaussian_blur_effect (const SeqRenderData *context, Sequence *seq, float, float, ImBuf *ibuf1, ImBuf *)
 
Public Sequencer Effect API
SeqEffectHandle SEQ_effect_handle_get (Sequence *seq)
 
SeqEffectHandle seq_effect_get_sequence_blend (Sequence *seq)
 
int SEQ_effect_get_num_inputs (int seq_type)
 

Drop Effect

#define XOFF   8
 
#define YOFF   8
 
static void do_drop_effect_byte (float fac, int x, int y, uchar *rect2i, uchar *rect1i, uchar *outi)
 
static void do_drop_effect_float (float fac, int x, int y, float *rect2i, float *rect1i, float *outi)
 

Text Effect

constexpr uint16_t JFA_INVALID = 0xFFFF
 
static void init_text_effect (Sequence *seq)
 
void SEQ_effect_text_font_unload (TextVars *data, const bool do_id_user)
 
void SEQ_effect_text_font_load (TextVars *data, const bool do_id_user)
 
static void free_text_effect (Sequence *seq, const bool do_id_user)
 
static void load_text_effect (Sequence *seq)
 
static void copy_text_effect (Sequence *dst, const Sequence *src, const int flag)
 
static int num_inputs_text ()
 
static StripEarlyOut early_out_text (const Sequence *seq, float)
 
static void text_gaussian_blur_x (const Span< float > gaussian, int half_size, int start_line, int width, int height, const uchar *rect, uchar *dst, const rcti &shadow_rect)
 
static void text_gaussian_blur_y (const Span< float > gaussian, int half_size, int start_line, int width, int height, const uchar *rect, uchar *dst, const rcti &shadow_rect)
 
static void clamp_rect (int width, int height, rcti &r_rect)
 
static void initialize_shadow_alpha (int width, int height, int2 offset, const rcti &shadow_rect, const uchar *input, Array< uchar > &r_shadow_mask)
 
static void composite_shadow (int width, const rcti &shadow_rect, const float4 &shadow_color, const Array< uchar > &shadow_mask, uchar *output)
 
static void draw_text_shadow (const SeqRenderData *context, const TextVars *data, int line_height, const rcti &rect, ImBuf *out)
 
static void jump_flooding_pass (Span< JFACoord > input, MutableSpan< JFACoord > output, int2 size, IndexRange x_range, IndexRange y_range, int step_size)
 
static rcti draw_text_outline (const SeqRenderData *context, const TextVars *data, int font, ColorManagedDisplay *display, int x, int y, int line_height, const rcti &rect, ImBuf *out)
 
static void fill_rect_alpha_under (const ImBuf *ibuf, const float col[4], int x1, int y1, int x2, int y2)
 
static ImBufdo_text_effect (const SeqRenderData *context, Sequence *seq, float, float, ImBuf *, ImBuf *)
 

Macro Definition Documentation

◆ XOFF

#define XOFF   8

Definition at line 660 of file effects.cc.

Referenced by do_drop_effect_byte(), and do_drop_effect_float().

◆ YOFF

#define YOFF   8

Definition at line 661 of file effects.cc.

Referenced by do_drop_effect_byte(), and do_drop_effect_float().

Function Documentation

◆ alpha_opaque() [1/2]

static bool alpha_opaque ( float alpha)
static

Definition at line 225 of file effects.cc.

◆ alpha_opaque() [2/2]

static bool alpha_opaque ( uchar alpha)
static

Definition at line 220 of file effects.cc.

Referenced by do_alphaover_effect(), and do_alphaunder_effect().

◆ apply_blend_function()

template<typename T , typename Func >
static void apply_blend_function ( float fac,
int width,
int height,
const T * src1,
T * src2,
T * dst,
Func blend_function )
static

Definition at line 819 of file effects.cc.

References T.

Referenced by do_blend_effect_byte(), and do_blend_effect_float().

◆ blur_isolate_highlights()

static void blur_isolate_highlights ( const float4 * in,
float4 * out,
int width,
int height,
float threshold,
float boost,
float clamp )
static

◆ check_zone()

◆ clamp_rect()

static void clamp_rect ( int width,
int height,
rcti & r_rect )
static

Definition at line 2708 of file effects.cc.

References blender::math::clamp(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by draw_text_shadow().

◆ composite_shadow()

static void composite_shadow ( int width,
const rcti & shadow_rect,
const float4 & shadow_color,
const Array< uchar > & shadow_mask,
uchar * output )
static

◆ copy_effect_default()

static void copy_effect_default ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 3193 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ copy_gaussian_blur_effect()

static void copy_gaussian_blur_effect ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 2311 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ copy_glow_effect()

static void copy_glow_effect ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 1738 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ copy_solid_color()

static void copy_solid_color ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 1875 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ copy_speed_effect()

static void copy_speed_effect ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 2100 of file effects.cc.

References Sequence::effectdata, MEM_dupallocN, and v.

Referenced by get_sequence_effect_impl().

◆ copy_text_effect()

static void copy_text_effect ( Sequence * dst,
const Sequence * src,
const int flag )
static

◆ copy_transform_effect()

static void copy_transform_effect ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 1467 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ copy_wipe_effect()

static void copy_wipe_effect ( Sequence * dst,
const Sequence * src,
const int  )
static

Definition at line 1343 of file effects.cc.

References Sequence::effectdata, and MEM_dupallocN.

Referenced by get_sequence_effect_impl().

◆ do_add_effect()

static void do_add_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_add_effect_byte()

static void do_add_effect_byte ( float fac,
int x,
int y,
uchar * rect1,
uchar * rect2,
uchar * out )
static

Definition at line 505 of file effects.cc.

References int, min_ii(), x, and y.

Referenced by do_add_effect().

◆ do_add_effect_float()

static void do_add_effect_float ( float fac,
int x,
int y,
float * rect1,
float * rect2,
float * out )
static

Definition at line 528 of file effects.cc.

References x, and y.

Referenced by do_add_effect().

◆ do_adjustment()

static ImBuf * do_adjustment ( const SeqRenderData * context,
Sequence * seq,
float timeline_frame,
float ,
ImBuf * ,
ImBuf *  )
static

Definition at line 2036 of file effects.cc.

References do_adjustment_impl().

Referenced by get_sequence_effect_impl().

◆ do_adjustment_impl()

◆ do_alphaover_effect() [1/2]

static void do_alphaover_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_alphaover_effect() [2/2]

template<typename T >
static void do_alphaover_effect ( float fac,
int width,
int height,
const T * src1,
const T * src2,
T * dst )
static

◆ do_alphaunder_effect() [1/2]

static void do_alphaunder_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_alphaunder_effect() [2/2]

template<typename T >
static void do_alphaunder_effect ( float fac,
int width,
int height,
const T * src1,
const T * src2,
T * dst )
static

◆ do_blend_effect_byte()

◆ do_blend_effect_float()

◆ do_blend_mode_effect()

static void do_blend_mode_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_colormix_effect()

static void do_colormix_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float ,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_cross_effect()

static void do_cross_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_cross_effect_byte()

static void do_cross_effect_byte ( float fac,
int x,
int y,
uchar * rect1,
uchar * rect2,
uchar * out )
static

Definition at line 356 of file effects.cc.

References int, x, and y.

Referenced by do_cross_effect().

◆ do_cross_effect_float()

static void do_cross_effect_float ( float fac,
int x,
int y,
float * rect1,
float * rect2,
float * out )
static

Definition at line 379 of file effects.cc.

References x, and y.

Referenced by do_cross_effect().

◆ do_drop_effect_byte()

static void do_drop_effect_byte ( float fac,
int x,
int y,
uchar * rect2i,
uchar * rect1i,
uchar * outi )
static

Definition at line 663 of file effects.cc.

References int, min_ii(), x, XOFF, and YOFF.

Referenced by do_overdrop_effect().

◆ do_drop_effect_float()

static void do_drop_effect_float ( float fac,
int x,
int y,
float * rect2i,
float * rect1i,
float * outi )
static

Definition at line 696 of file effects.cc.

References min_ii(), x, XOFF, and YOFF.

Referenced by do_overdrop_effect().

◆ do_gammacross_effect() [1/2]

static void do_gammacross_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_gammacross_effect() [2/2]

template<typename T >
static void do_gammacross_effect ( float fac,
int width,
int height,
const T * src1,
const T * src2,
T * dst )
static

◆ do_gaussian_blur_effect()

static ImBuf * do_gaussian_blur_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float ,
ImBuf * ibuf1,
ImBuf *  )
static

◆ do_glow_effect()

static ImBuf * do_glow_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float fac,
ImBuf * ibuf1,
ImBuf * ibuf2 )
static

◆ do_glow_effect_byte()

◆ do_glow_effect_float()

static void do_glow_effect_float ( Sequence * seq,
int render_size,
float fac,
int x,
int y,
float * rect1,
float * ,
float * out )
static

◆ do_mul_effect()

static void do_mul_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_mul_effect_byte()

static void do_mul_effect_byte ( float fac,
int x,
int y,
uchar * rect1,
uchar * rect2,
uchar * out )
static

Definition at line 736 of file effects.cc.

References int, x, and y.

Referenced by do_mul_effect().

◆ do_mul_effect_float()

static void do_mul_effect_float ( float fac,
int x,
int y,
float * rect1,
float * rect2,
float * out )
static

Definition at line 762 of file effects.cc.

References x, and y.

Referenced by do_mul_effect().

◆ do_multicam()

static ImBuf * do_multicam ( const SeqRenderData * context,
Sequence * seq,
float timeline_frame,
float ,
ImBuf * ,
ImBuf *  )
static

◆ do_overdrop_effect()

static void do_overdrop_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_solid_color()

static ImBuf * do_solid_color ( const SeqRenderData * context,
Sequence * seq,
float ,
float ,
ImBuf * ibuf1,
ImBuf * ibuf2 )
static

◆ do_speed_effect()

static ImBuf * do_speed_effect ( const SeqRenderData * context,
Sequence * seq,
float timeline_frame,
float fac,
ImBuf * ibuf1,
ImBuf * ibuf2 )
static

◆ do_sub_effect()

static void do_sub_effect ( const SeqRenderData * context,
Sequence * ,
float ,
float fac,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_sub_effect_byte()

static void do_sub_effect_byte ( float fac,
int x,
int y,
uchar * rect1,
uchar * rect2,
uchar * out )
static

Definition at line 581 of file effects.cc.

References int, max_ii(), x, and y.

Referenced by do_sub_effect().

◆ do_sub_effect_float()

static void do_sub_effect_float ( float fac,
int x,
int y,
float * rect1,
float * rect2,
float * out )
static

Definition at line 604 of file effects.cc.

References max_ff(), x, and y.

Referenced by do_sub_effect().

◆ do_text_effect()

◆ do_transform_effect()

static void do_transform_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float ,
const ImBuf * ibuf1,
const ImBuf * ,
int start_line,
int total_lines,
ImBuf * out )
static

◆ do_wipe_effect() [1/2]

static ImBuf * do_wipe_effect ( const SeqRenderData * context,
Sequence * seq,
float ,
float fac,
ImBuf * ibuf1,
ImBuf * ibuf2 )
static

◆ do_wipe_effect() [2/2]

template<typename T >
static void do_wipe_effect ( const Sequence * seq,
float fac,
int width,
int height,
const T * rect1,
const T * rect2,
T * out )
static

◆ draw_text_outline()

static rcti draw_text_outline ( const SeqRenderData * context,
const TextVars * data,
int font,
ColorManagedDisplay * display,
int x,
int y,
int line_height,
const rcti & rect,
ImBuf * out )
static

◆ draw_text_shadow()

◆ early_out_adjustment()

static StripEarlyOut early_out_adjustment ( const Sequence * ,
float  )
static

Definition at line 1992 of file effects.cc.

References NoInput.

Referenced by get_sequence_effect_impl().

◆ early_out_color()

static StripEarlyOut early_out_color ( const Sequence * ,
float  )
static

Definition at line 1880 of file effects.cc.

References NoInput.

Referenced by get_sequence_effect_impl().

◆ early_out_fade()

static StripEarlyOut early_out_fade ( const Sequence * ,
float fac )
static

Definition at line 3208 of file effects.cc.

References DoEffect, UseInput1, and UseInput2.

Referenced by get_sequence_effect_impl().

◆ early_out_gaussian_blur()

static StripEarlyOut early_out_gaussian_blur ( const Sequence * seq,
float  )
static

Definition at line 2316 of file effects.cc.

References DoEffect, Sequence::effectdata, and UseInput1.

Referenced by get_sequence_effect_impl().

◆ early_out_mul_input1()

static StripEarlyOut early_out_mul_input1 ( const Sequence * ,
float fac )
static

Definition at line 3227 of file effects.cc.

References DoEffect, and UseInput2.

Referenced by get_sequence_effect_impl().

◆ early_out_mul_input2()

static StripEarlyOut early_out_mul_input2 ( const Sequence * ,
float fac )
static

Definition at line 3219 of file effects.cc.

References DoEffect, and UseInput1.

Referenced by get_sequence_effect_impl().

◆ early_out_multicam()

static StripEarlyOut early_out_multicam ( const Sequence * ,
float  )
static

Definition at line 1945 of file effects.cc.

References NoInput.

Referenced by get_sequence_effect_impl().

◆ early_out_noop()

static StripEarlyOut early_out_noop ( const Sequence * ,
float  )
static

Definition at line 3203 of file effects.cc.

References DoEffect.

Referenced by get_sequence_effect_impl().

◆ early_out_speed()

static StripEarlyOut early_out_speed ( const Sequence * ,
float  )
static

Definition at line 2108 of file effects.cc.

References DoEffect.

Referenced by get_sequence_effect_impl().

◆ early_out_text()

static StripEarlyOut early_out_text ( const Sequence * seq,
float  )
static

Definition at line 2628 of file effects.cc.

References Sequence::effectdata, NoInput, SEQ_TEXT_OUTLINE, SEQ_TEXT_SHADOW, and UseInput1.

Referenced by get_sequence_effect_impl().

◆ fill_rect_alpha_under()

static void fill_rect_alpha_under ( const ImBuf * ibuf,
const float col[4],
int x1,
int y1,
int x2,
int y2 )
static

◆ free_effect_default()

static void free_effect_default ( Sequence * seq,
const bool  )
static

Definition at line 3198 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ free_gaussian_blur_effect()

static void free_gaussian_blur_effect ( Sequence * seq,
const bool  )
static

Definition at line 2306 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ free_glow_effect()

static void free_glow_effect ( Sequence * seq,
const bool  )
static

Definition at line 1733 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ free_noop()

static void free_noop ( Sequence * ,
const bool  )
static

Definition at line 3186 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ free_solid_color()

static void free_solid_color ( Sequence * seq,
const bool  )
static

Definition at line 1870 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ free_speed_effect()

static void free_speed_effect ( Sequence * seq,
const bool  )
static

Definition at line 2091 of file effects.cc.

References Sequence::effectdata, MEM_freeN(), MEM_SAFE_FREE, and v.

Referenced by get_sequence_effect_impl().

◆ free_text_effect()

static void free_text_effect ( Sequence * seq,
const bool do_id_user )
static

Definition at line 2597 of file effects.cc.

References Sequence::effectdata, MEM_freeN(), and SEQ_effect_text_font_unload().

Referenced by get_sequence_effect_impl().

◆ free_transform_effect()

static void free_transform_effect ( Sequence * seq,
const bool  )
static

Definition at line 1462 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ free_wipe_effect()

static void free_wipe_effect ( Sequence * seq,
const bool  )
static

Definition at line 1338 of file effects.cc.

References Sequence::effectdata, and MEM_SAFE_FREE.

Referenced by get_sequence_effect_impl().

◆ gammaCorrect()

static float gammaCorrect ( float c)
static

Definition at line 438 of file effects.cc.

References UNLIKELY.

Referenced by do_gammacross_effect().

◆ gaussian_blur_x()

template<typename T >
static void gaussian_blur_x ( const Span< float > gaussian,
int half_size,
int start_line,
int width,
int height,
int ,
const T * rect,
T * dst )
static

Definition at line 2347 of file effects.cc.

References blender::math::max(), and blender::math::min().

◆ gaussian_blur_y()

template<typename T >
static void gaussian_blur_y ( const Span< float > gaussian,
int half_size,
int start_line,
int width,
int height,
int frame_height,
const T * rect,
T * dst )
static

Definition at line 2381 of file effects.cc.

References blender::math::max(), blender::math::min(), and x.

◆ get_default_fac_fade()

static void get_default_fac_fade ( const Scene * scene,
const Sequence * seq,
float timeline_frame,
float * fac )
static

◆ get_default_fac_noop()

static void get_default_fac_noop ( const Scene * ,
const Sequence * ,
float ,
float * fac )
static

Definition at line 3235 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ get_sequence_effect_impl()

static SeqEffectHandle get_sequence_effect_impl ( int seq_type)
static

Definition at line 3259 of file effects.cc.

References SeqEffectHandle::copy, copy_effect_default(), copy_gaussian_blur_effect(), copy_glow_effect(), copy_solid_color(), copy_speed_effect(), copy_text_effect(), copy_transform_effect(), copy_wipe_effect(), do_add_effect(), do_adjustment(), do_alphaover_effect(), do_alphaunder_effect(), do_blend_mode_effect(), do_colormix_effect(), do_cross_effect(), do_gammacross_effect(), do_gaussian_blur_effect(), do_glow_effect(), do_mul_effect(), do_multicam(), do_overdrop_effect(), do_solid_color(), do_speed_effect(), do_sub_effect(), do_text_effect(), do_transform_effect(), do_wipe_effect(), SeqEffectHandle::early_out, early_out_adjustment(), early_out_color(), early_out_fade(), early_out_gaussian_blur(), early_out_mul_input1(), early_out_mul_input2(), early_out_multicam(), early_out_noop(), early_out_speed(), early_out_text(), SeqEffectHandle::execute, SeqEffectHandle::execute_slice, SeqEffectHandle::free, free_effect_default(), free_gaussian_blur_effect(), free_glow_effect(), free_noop(), free_solid_color(), free_speed_effect(), free_text_effect(), free_transform_effect(), free_wipe_effect(), SeqEffectHandle::get_default_fac, get_default_fac_fade(), get_default_fac_noop(), SeqEffectHandle::init, init_alpha_over_or_under(), init_colormix_effect(), init_execution(), SeqEffectHandle::init_execution, init_gaussian_blur_effect(), init_glow_effect(), init_noop(), init_solid_color(), init_speed_effect(), init_text_effect(), init_transform_effect(), init_wipe_effect(), SeqEffectHandle::load, load_noop(), load_speed_effect(), load_text_effect(), SeqEffectHandle::multithreaded, SeqEffectHandle::num_inputs, num_inputs_adjustment(), num_inputs_color(), num_inputs_default(), num_inputs_gaussian_blur(), num_inputs_glow(), num_inputs_multicam(), num_inputs_speed(), num_inputs_text(), num_inputs_transform(), num_inputs_wipe(), SEQ_TYPE_ADD, SEQ_TYPE_ADJUSTMENT, SEQ_TYPE_ALPHAOVER, SEQ_TYPE_ALPHAUNDER, SEQ_TYPE_BLEND_COLOR, SEQ_TYPE_COLOR, SEQ_TYPE_COLOR_BURN, SEQ_TYPE_COLORMIX, SEQ_TYPE_CROSS, SEQ_TYPE_DARKEN, SEQ_TYPE_DIFFERENCE, SEQ_TYPE_DODGE, SEQ_TYPE_EXCLUSION, SEQ_TYPE_GAMCROSS, SEQ_TYPE_GAUSSIAN_BLUR, SEQ_TYPE_GLOW, SEQ_TYPE_HARD_LIGHT, SEQ_TYPE_HUE, SEQ_TYPE_LIGHTEN, SEQ_TYPE_LIN_LIGHT, SEQ_TYPE_LINEAR_BURN, SEQ_TYPE_MUL, SEQ_TYPE_MULTICAM, SEQ_TYPE_OVERDROP, SEQ_TYPE_OVERLAY, SEQ_TYPE_PIN_LIGHT, SEQ_TYPE_SATURATION, SEQ_TYPE_SCREEN, SEQ_TYPE_SOFT_LIGHT, SEQ_TYPE_SPEED, SEQ_TYPE_SUB, SEQ_TYPE_TEXT, SEQ_TYPE_TRANSFORM, SEQ_TYPE_VALUE, SEQ_TYPE_VIVID_LIGHT, SEQ_TYPE_WIPE, and SeqEffectHandle::supports_mask.

Referenced by do_speed_effect(), SEQ_effect_get_num_inputs(), seq_effect_get_sequence_blend(), and SEQ_effect_handle_get().

◆ glow_blur_bitmap()

static void glow_blur_bitmap ( const float4 * src,
float4 * map,
int width,
int height,
float blur,
int quality )
static

◆ in_band()

static float in_band ( float width,
float dist,
int side,
int dir )
static

This function calculates the blur band for the wipe effects.

Definition at line 1087 of file effects.cc.

References float.

Referenced by check_zone().

◆ init_alpha_over_or_under()

static void init_alpha_over_or_under ( Sequence * seq)
static

Definition at line 211 of file effects.cc.

References Sequence::seq1, and Sequence::seq2.

Referenced by get_sequence_effect_impl().

◆ init_colormix_effect()

static void init_colormix_effect ( Sequence * seq)
static

Definition at line 1010 of file effects.cc.

References data, Sequence::effectdata, MEM_callocN, MEM_freeN(), and SEQ_TYPE_OVERLAY.

Referenced by get_sequence_effect_impl().

◆ init_execution()

static ImBuf * init_execution ( const SeqRenderData * context,
ImBuf * ibuf1,
ImBuf * ibuf2 )
static

Definition at line 3253 of file effects.cc.

References prepare_effect_imbufs().

Referenced by get_sequence_effect_impl().

◆ init_gaussian_blur_effect()

static void init_gaussian_blur_effect ( Sequence * seq)
static

Definition at line 2292 of file effects.cc.

References Sequence::effectdata, MEM_callocN, and MEM_freeN().

Referenced by get_sequence_effect_impl().

◆ init_glow_effect()

static void init_glow_effect ( Sequence * seq)
static

◆ init_noop()

static void init_noop ( Sequence * )
static

Definition at line 3182 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ init_solid_color()

static void init_solid_color ( Sequence * seq)
static

Definition at line 1851 of file effects.cc.

References SolidColorVars::col, Sequence::effectdata, MEM_callocN, and MEM_freeN().

Referenced by get_sequence_effect_impl().

◆ init_speed_effect()

static void init_speed_effect ( Sequence * seq)
static

Definition at line 2063 of file effects.cc.

References Sequence::effectdata, MEM_callocN, MEM_freeN(), SEQ_SPEED_STRETCH, and v.

Referenced by get_sequence_effect_impl().

◆ init_text_effect()

static void init_text_effect ( Sequence * seq)
static

◆ init_transform_effect()

static void init_transform_effect ( Sequence * seq)
static

Definition at line 1432 of file effects.cc.

References Sequence::effectdata, MEM_callocN, MEM_freeN(), and transform().

Referenced by get_sequence_effect_impl().

◆ init_wipe_effect()

static void init_wipe_effect ( Sequence * seq)
static

Definition at line 1324 of file effects.cc.

References Sequence::effectdata, MEM_callocN, and MEM_freeN().

Referenced by get_sequence_effect_impl().

◆ initialize_shadow_alpha()

static void initialize_shadow_alpha ( int width,
int height,
int2 offset,
const rcti & shadow_rect,
const uchar * input,
Array< uchar > & r_shadow_mask )
static

◆ invGammaCorrect()

static float invGammaCorrect ( float c)
static

Definition at line 446 of file effects.cc.

References sqrtf_signed().

Referenced by do_gammacross_effect().

◆ jump_flooding_pass()

static void jump_flooding_pass ( Span< JFACoord > input,
MutableSpan< JFACoord > output,
int2 size,
IndexRange x_range,
IndexRange y_range,
int step_size )
static

◆ load_noop()

static void load_noop ( Sequence * )
static

Definition at line 3184 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ load_premul_pixel() [1/2]

static float4 load_premul_pixel ( const float * ptr)
static

Definition at line 116 of file effects.cc.

References ptr.

◆ load_premul_pixel() [2/2]

static float4 load_premul_pixel ( const uchar * ptr)
static

◆ load_speed_effect()

static void load_speed_effect ( Sequence * seq)
static

Definition at line 2080 of file effects.cc.

References Sequence::effectdata, and v.

Referenced by get_sequence_effect_impl().

◆ load_text_effect()

static void load_text_effect ( Sequence * seq)
static

Definition at line 2608 of file effects.cc.

References Sequence::effectdata, and SEQ_effect_text_font_load().

Referenced by get_sequence_effect_impl().

◆ make_gaussian_blur_kernel()

static Array< float > make_gaussian_blur_kernel ( float rad,
int size )
static

Definition at line 2325 of file effects.cc.

References R_FILTER_GAUSS, RE_filter_value(), size(), and sum().

Referenced by do_gaussian_blur_effect(), and draw_text_shadow().

◆ num_inputs_adjustment()

static int num_inputs_adjustment ( )
static

No effect inputs for adjustment, we use #give_ibuf_seq.

Definition at line 1987 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_color()

static int num_inputs_color ( )
static

Definition at line 1865 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_default()

static int num_inputs_default ( )
static

Definition at line 3188 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_gaussian_blur()

static int num_inputs_gaussian_blur ( )
static

Definition at line 2301 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_glow()

static int num_inputs_glow ( )
static

Definition at line 1728 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_multicam()

static int num_inputs_multicam ( )
static

No effect inputs for multi-camera, we use #give_ibuf_seq.

Definition at line 1940 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_speed()

static int num_inputs_speed ( )
static

Definition at line 2086 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_text()

static int num_inputs_text ( )
static

Definition at line 2623 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_transform()

static int num_inputs_transform ( )
static

Definition at line 1457 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ num_inputs_wipe()

static int num_inputs_wipe ( )
static

Definition at line 1333 of file effects.cc.

Referenced by get_sequence_effect_impl().

◆ precalc_wipe_zone()

static WipeZone precalc_wipe_zone ( const WipeVars * wipe,
int xo,
int yo )
static

◆ prepare_effect_imbufs()

◆ SEQ_effect_get_num_inputs()

◆ seq_effect_get_sequence_blend()

◆ SEQ_effect_handle_get()

◆ seq_effect_speed_frame_map_ensure()

static void seq_effect_speed_frame_map_ensure ( Scene * scene,
Sequence * seq )
static

Definition at line 2149 of file effects.cc.

References Sequence::effectdata, seq_effect_speed_rebuild_map(), and v.

Referenced by seq_speed_effect_target_frame_get().

◆ seq_effect_speed_rebuild_map()

void seq_effect_speed_rebuild_map ( Scene * scene,
Sequence * seq )

◆ seq_effect_speed_speed_factor_curve_get()

static FCurve * seq_effect_speed_speed_factor_curve_get ( Scene * scene,
Sequence * seq )
static

◆ SEQ_effect_text_font_load()

◆ SEQ_effect_text_font_unload()

void SEQ_effect_text_font_unload ( TextVars * data,
const bool do_id_user )

Definition at line 2535 of file effects.cc.

References BLF_unload_id(), and id_us_min().

Referenced by free_text_effect().

◆ seq_speed_effect_target_frame_get()

◆ slice_get_byte_buffers()

static void slice_get_byte_buffers ( const SeqRenderData * context,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
const ImBuf * out,
int start_line,
uchar ** rect1,
uchar ** rect2,
uchar ** rect_out )
static

◆ slice_get_float_buffers()

static void slice_get_float_buffers ( const SeqRenderData * context,
const ImBuf * ibuf1,
const ImBuf * ibuf2,
const ImBuf * out,
int start_line,
float ** rect1,
float ** rect2,
float ** rect_out )
static

◆ speed_effect_interpolation_ratio_get()

static float speed_effect_interpolation_ratio_get ( Scene * scene,
Sequence * seq_speed,
float timeline_frame )
static

Definition at line 2217 of file effects.cc.

References floor(), and seq_speed_effect_target_frame_get().

Referenced by do_speed_effect().

◆ store_opaque_black_pixel() [1/2]

static void store_opaque_black_pixel ( float * dst)
static

Definition at line 139 of file effects.cc.

◆ store_opaque_black_pixel() [2/2]

static void store_opaque_black_pixel ( uchar * dst)
static

Definition at line 131 of file effects.cc.

Referenced by do_wipe_effect().

◆ store_premul_pixel() [1/2]

static void store_premul_pixel ( const float4 & pix,
float * dst )
static

Definition at line 126 of file effects.cc.

◆ store_premul_pixel() [2/2]

static void store_premul_pixel ( const float4 & pix,
uchar * dst )
static

◆ text_gaussian_blur_x()

static void text_gaussian_blur_x ( const Span< float > gaussian,
int half_size,
int start_line,
int width,
int height,
const uchar * rect,
uchar * dst,
const rcti & shadow_rect )
static

Definition at line 2645 of file effects.cc.

References blender::math::max(), blender::math::min(), rcti::xmax, and rcti::xmin.

Referenced by draw_text_shadow().

◆ text_gaussian_blur_y()

static void text_gaussian_blur_y ( const Span< float > gaussian,
int half_size,
int start_line,
int width,
int height,
const uchar * rect,
uchar * dst,
const rcti & shadow_rect )
static

Definition at line 2677 of file effects.cc.

References blender::math::max(), blender::math::min(), x, rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by draw_text_shadow().

◆ transform_image()

Variable Documentation

◆ JFA_INVALID

uint16_t JFA_INVALID = 0xFFFF
constexpr

Definition at line 2842 of file effects.cc.

Referenced by jump_flooding_pass().