122 if (!make_float &&
STREQ(from_colorspace, to_colorspace)) {
146 (
unsigned char *)ibuf->
rect,
159 if (from_colorspace ==
NULL || from_colorspace[0] ==
'\0') {
184 if (to_colorspace && to_colorspace[0] !=
'\0') {
197 if (to_colorspace && to_colorspace[0] !=
'\0') {
216 int preview_render_size,
220 r_context->
bmain = bmain;
223 r_context->
rectx = rectx;
224 r_context->
recty = recty;
253 if (frame_index == -1 || se ==
NULL) {
274 if ((seq->startdisp <= timeline_frame) && (seq->enddisp > timeline_frame)) {
290 seq_arr[seq->machine] = seq;
298 for (
LinkNode *seq_item = effect_inputs.
list; seq_item; seq_item = seq_item->
next) {
308 if (chanshown != 0 && chanshown <= seq->machine) {
369 for (; b <= chanshown && b >= 0; b++) {
371 seq_arr_out[cnt++] = seq_arr[b];
425 float UNUSED(timeline_frame))
448 if (seq->
sat != 1.0f) {
490 if (is_proxy_image) {
537 const float scale_x =
transform->scale_x *
data->image_scale_factor;
538 const float scale_y =
transform->scale_y *
data->image_scale_factor;
539 const float image_center_offs_x = (
data->ibuf_out->x -
data->ibuf_source->x) / 2;
540 const float image_center_offs_y = (
data->ibuf_out->y -
data->ibuf_source->y) / 2;
541 const float translate_x =
transform->xofs *
data->preview_scale_factor + image_center_offs_x;
542 const float translate_y =
transform->yofs *
data->preview_scale_factor + image_center_offs_y;
543 const float pivot[2] = {
data->ibuf_source->x / 2,
data->ibuf_source->y / 2};
544 float transform_matrix[3][3];
546 (
const float[]){translate_x, translate_y},
548 (
const float[]){scale_x, scale_y});
554 const int left =
c->left *
data->crop_scale_factor;
555 const int right =
c->right *
data->crop_scale_factor;
556 const int top =
c->top *
data->crop_scale_factor;
557 const int bottom =
c->bottom *
data->crop_scale_factor;
559 const float source_pixel_range_max[2] = {
data->ibuf_source->x -
right,
561 const float source_pixel_range_min[2] = {
left,
bottom};
564 for (
int yi =
data->start_line; yi < data->start_line +
data->tot_line; yi++) {
565 for (
int xi = 0; xi <
width; xi++) {
566 float uv[2] = {xi, yi};
569 if (source_pixel_range_min[0] >= uv[0] || uv[0] >= source_pixel_range_max[0] ||
570 source_pixel_range_min[1] >= uv[1] || uv[1] >= source_pixel_range_max[1]) {
574 if (
data->for_render) {
593 rt = (
char *)ibuf->
rect;
597 const int imul = (int)(256.0f * fmul);
598 a = ibuf->
x * ibuf->
y;
600 rt[0] =
min_ii((imul * rt[0]) >> 8, 255);
601 rt[1] =
min_ii((imul * rt[1]) >> 8, 255);
602 rt[2] =
min_ii((imul * rt[2]) >> 8, 255);
603 rt[3] =
min_ii((imul * rt[3]) >> 8, 255);
609 a = ibuf->
x * ibuf->
y;
623 float timeline_frame,
625 const bool is_proxy_image)
634 ibuf = preprocessed_ibuf;
649 init_data.is_proxy_image = is_proxy_image;
672 if (preprocessed_ibuf ==
NULL) {
684 if (seq->
sat != 1.0f) {
693 if (preprocessed_ibuf->
rect) {
710 if (ibuf_new != preprocessed_ibuf) {
713 preprocessed_ibuf = ibuf_new;
717 return preprocessed_ibuf;
723 float timeline_frame,
725 const bool is_proxy_image)
727 if (
context->is_proxy_render ==
false &&
729 use_preprocess =
true;
737 if (use_preprocess) {
811 float timeline_frame,
824 init_data.timeline_frame = timeline_frame;
844 float timeline_frame)
856 ibuf[0] = ibuf[1] = ibuf[2] =
NULL;
858 input[0] = seq->
seq1;
859 input[1] = seq->
seq2;
860 input[2] = seq->
seq3;
889 for (i = 0; i < 3; i++) {
905 &sh,
context, seq, timeline_frame, fac, facf, ibuf[0], ibuf[1], ibuf[2]);
908 out = sh.
execute(
context, seq, timeline_frame, fac, facf, ibuf[0], ibuf[1], ibuf[2]);
924 for (i = 0; i < 3; i++) {
957 if (prefix[0] ==
'\0') {
983 Scene *
scene,
Sequence *seq,
int totfiles,
char *name,
char *r_prefix,
const char *r_ext)
987 if (r_prefix[0] ==
'\0') {
1000 float UNUSED(frame_index),
1001 float timeline_frame,
1002 bool *r_is_proxy_image)
1005 const char *ext =
NULL;
1010 if (s_elem ==
NULL) {
1020 *r_is_proxy_image =
true;
1027 context->scene, seq, totfiles, name, prefix, ext);
1029 if (is_multiview_render) {
1033 for (
int view_id = 0; view_id < totfiles; view_id++) {
1037 if (ibufs_arr[0] ==
NULL) {
1045 for (
int view_id = 0; view_id < totviews; view_id++) {
1047 localcontext.
view_id = view_id;
1049 if (view_id !=
context->view_id) {
1051 &localcontext, seq, ibufs_arr[view_id], timeline_frame,
true,
false);
1056 ibuf = ibufs_arr[
context->view_id];
1059 for (
int view_id = 0; view_id < totviews; view_id++) {
1060 if (ibufs_arr[view_id] != ibuf) {
1107 float timeline_frame,
1109 bool *r_is_proxy_image)
1129 *r_is_proxy_image =
true;
1157 float timeline_frame,
1158 bool *r_is_proxy_image)
1170 if (is_multiview_render) {
1173 ibuf_arr =
MEM_callocN(
sizeof(
ImBuf *) * totviews,
"Sequence Image Views Imbufs");
1176 for (ibuf_view_id = 0, sanim = seq->
anims.
first; sanim; sanim = sanim->
next, ibuf_view_id++) {
1179 context, seq, frame_index, timeline_frame, sanim, r_is_proxy_image);
1184 if (ibuf_arr[0] ==
NULL) {
1193 for (
int view_id = 0; view_id < totviews; view_id++) {
1195 localcontext.
view_id = view_id;
1197 if (view_id !=
context->view_id) {
1199 &localcontext, seq, ibuf_arr[view_id], timeline_frame,
true,
false);
1204 ibuf = ibuf_arr[
context->view_id];
1207 for (
int view_id = 0; view_id < totviews; view_id++) {
1208 if (ibuf_arr[view_id] != ibuf) {
1217 context, seq, frame_index, timeline_frame, sanim, r_is_proxy_image);
1224 if (*r_is_proxy_image ==
false) {
1235 float tloc[2], tscale, tangle;
1248 bool *r_is_proxy_image)
1289 *r_is_proxy_image =
true;
1335 mr_handle, mask_temp,
context->rectx,
context->recty,
true,
true,
true);
1345 const float *fp_src;
1354 fp_dst[0] = fp_dst[1] = fp_dst[2] = *fp_src;
1363 const float *fp_src;
1364 unsigned char *ub_dst;
1369 ub_dst = (
unsigned char *)ibuf->
rect;
1372 ub_dst[0] = ub_dst[1] = ub_dst[2] = (
unsigned char)(*fp_src * 255.0f);
1395 float timeline_frame)
1406 #ifdef DURIAN_CAMERA_SWITCH
1442 const bool is_rendering =
G.is_rendering;
1443 const bool is_background =
G.background;
1444 const bool do_seq_gl = is_rendering ? 0 : (
context->scene->r.seq_prev_type) !=
OB_RENDER;
1445 bool have_comp =
false;
1446 bool use_gpencil =
true;
1448 bool is_frame_update =
false;
1478 #ifdef DURIAN_CAMERA_SWITCH
1492 if (have_comp ==
false && camera ==
NULL) {
1497 use_gpencil =
false;
1503 #ifdef DURIAN_CAMERA_SWITCH
1508 is_frame_update = (orig_data.timeline_frame !=
scene->
r.
cfra) ||
1512 char err_out[256] =
"unknown";
1525 if (
context->scene->r.seq_prev_type == 0) {
1526 context->scene->r.seq_prev_type = 3 ;
1537 &
context->scene->display.shading,
1538 context->scene->r.seq_prev_type,
1549 fprintf(stderr,
"seq_render_scene_strip failed to get opengl buffer: %s\n", err_out);
1557 ibufs_arr =
MEM_callocN(
sizeof(
ImBuf *) * totviews,
"Sequence Image Views Imbufs");
1567 if (!is_thread_main || is_rendering ==
false || is_background ||
context->for_render) {
1573 re,
context->bmain,
scene, have_comp ?
NULL : view_layer, camera, frame,
false);
1576 G.is_rendering = is_rendering;
1579 for (
int view_id = 0; view_id < totviews; view_id++) {
1583 localcontext.
view_id = view_id;
1589 memcpy(ibufs_arr[view_id]->rect_float,
1596 ibufs_arr[view_id]->zbuf_float, rres.
rectz,
sizeof(
float) * rres.
rectx * rres.
recty);
1604 memcpy(ibufs_arr[view_id]->rect, rres.
rect32, 4 * rres.
rectx * rres.
recty);
1607 if (view_id !=
context->view_id) {
1615 ibuf = ibufs_arr[
context->view_id];
1618 for (
int view_id = 0; view_id < totviews; view_id++) {
1619 if (ibufs_arr[view_id] != ibuf) {
1636 #ifdef DURIAN_CAMERA_SWITCH
1668 frame_index + offset,
1682 float timeline_frame,
1683 bool *r_is_proxy_image)
1705 state->scene_parents = &scene_parent;
1717 state->scene_parents =
state->scene_parents->next;
1777 float timeline_frame)
1780 bool use_preprocess =
false;
1781 bool is_proxy_image =
false;
1801 context, seq, ibuf, timeline_frame, use_preprocess, is_proxy_image);
1814 bool swap_input =
false;
1858 &sh,
context, seq, timeline_frame, facf, facf, ibuf2, ibuf1,
NULL);
1867 &sh,
context, seq, timeline_frame, facf, facf, ibuf1, ibuf2,
NULL);
1880 float timeline_frame,
1894 for (i =
count - 1; i >= 0; i--) {
1940 for (; i <
count; i++) {
1997 if (
count && !out) {
2001 if (
context->is_prefetch_render) {
2017 float timeline_frame,
2028 float timeline_frame,
typedef float(TangentPoint)[2]
struct AnimData * BKE_animdata_from_id(struct ID *id)
void BKE_animsys_evaluate_all_animation(struct Main *main, struct Depsgraph *depsgraph, float ctime)
AnimationEvalContext BKE_animsys_eval_context_construct(struct Depsgraph *depsgraph, float eval_time)
void BKE_animsys_evaluate_animdata(struct ID *id, struct AnimData *adt, const struct AnimationEvalContext *anim_eval_context, eAnimData_Recalc recalc, const bool flush_to_original)
float evaluate_fcurve(struct FCurve *fcu, float evaltime)
struct FCurve * id_data_find_fcurve(ID *id, void *data, struct StructRNA *type, const char *prop_name, int index, bool *r_driven)
struct anim * openanim(const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
@ LIB_ID_COPY_NO_ANIMDATA
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, const int flag)
void BKE_id_free(struct Main *bmain, void *idv)
const char * BKE_main_blendfile_path_from_global(void)
void BKE_mask_evaluate(struct Mask *mask, const float ctime, const bool do_newframe)
void BKE_maskrasterize_handle_free(MaskRasterHandle *mr_handle)
void BKE_maskrasterize_handle_init(MaskRasterHandle *mr_handle, struct Mask *mask, const int width, const int height, const bool do_aspect_correct, const bool do_mask_aa, const bool do_feather)
void BKE_maskrasterize_buffer(MaskRasterHandle *mr_handle, const unsigned int width, const unsigned int height, float *buffer)
Rasterize a buffer from a single mask (threaded execution).
MaskRasterHandle * BKE_maskrasterize_handle_new(void)
#define MOVIECLIP_CACHE_SKIP
struct ImBuf * BKE_movieclip_get_ibuf_flag(struct MovieClip *clip, struct MovieClipUser *user, int flag, int cache_flag)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
struct ImBuf * BKE_movieclip_get_stable_ibuf(struct MovieClip *clip, struct MovieClipUser *user, float loc[2], float *scale, float *angle, int postprocess_flag)
void BKE_scene_frame_set(struct Scene *scene, double cfra)
void BKE_scene_multiview_view_prefix_get(struct Scene *scene, const char *name, char *r_prefix, const char **r_ext)
bool BKE_scene_camera_switch_update(struct Scene *scene)
void BKE_scene_graph_update_for_newframe(struct Depsgraph *depsgraph)
int BKE_scene_multiview_num_views_get(const struct RenderData *rd)
struct Depsgraph * BKE_scene_ensure_depsgraph(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer)
const char * BKE_scene_multiview_render_view_name_get(const struct RenderData *rd, const int view_id)
struct ImBuf *(* SequencerDrawView)(struct Depsgraph *depsgraph, struct Scene *scene, struct View3DShading *shading_override, enum eDrawType drawtype, struct Object *camera, int width, int height, enum eImBufFlags flag, eV3DOffscreenDrawFlag draw_flags, int alpha_mode, const char *viewname, struct GPUOffScreen *ofs, char err_out[256])
#define BLI_linklist_append_alloca(list_pair, ptr)
int BLI_linklist_index(const LinkNode *list, void *ptr) ATTR_WARN_UNUSED_RESULT
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
int BLI_listbase_count_at_most(const struct ListBase *listbase, const int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
void loc_rot_size_to_mat3(float R[3][3], const float loc[2], const float angle, const float size[2])
void transform_pivot_set_m3(float mat[3][3], const float pivot[2])
void mul_v2_m3v2(float r[2], const float m[3][3], const float v[2])
bool invert_m3(float R[3][3])
void BLI_join_dirfile(char *__restrict dst, const size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
#define BLI_MUTEX_INITIALIZER
int BLI_thread_is_main(void)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
typedef double(DMatrix)[4][4]
struct Depsgraph Depsgraph
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ MCLIP_PROXY_RENDER_USE_FALLBACK_RENDER
@ MCLIP_PROXY_RENDER_UNDISTORT
@ MCLIP_PROXY_RENDER_SIZE_75
@ MCLIP_PROXY_RENDER_SIZE_100
@ MCLIP_PROXY_RENDER_SIZE_50
@ MCLIP_PROXY_RENDER_SIZE_FULL
@ MCLIP_PROXY_RENDER_SIZE_25
@ R_SEQ_OVERRIDE_SCENE_SETTINGS
#define R_NO_CAMERA_SWITCH
#define SEQ_BLEND_REPLACE
@ SEQ_USE_EFFECT_DEFAULT_FADE
#define SEQ_MOVIECLIP_RENDER_STABILIZED
#define SEQ_MOVIECLIP_RENDER_UNDISTORTED
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
@ SEQ_STORAGE_PROXY_CUSTOM_FILE
#define SEQ_EDIT_PROXY_DIR_STORAGE
@ V3D_OFSDRAW_OVERRIDE_SCENE_SETTINGS
@ V3D_OFSDRAW_SHOW_ANNOTATION
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble right
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble top
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble bottom
const char * IMB_colormanagement_get_rect_colorspace(struct ImBuf *ibuf)
void IMB_colormanagement_transform_from_byte_threaded(float *float_buffer, unsigned char *byte_buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_assign_float_colorspace(struct ImBuf *ibuf, const char *name)
void IMB_colormanagement_transform_threaded(float *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace, bool predivide)
void IMB_colormanagement_transform_byte_threaded(unsigned char *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
@ COLOR_ROLE_SCENE_LINEAR
void IMB_colormanagement_transform_v4(float pixel[4], const char *from_colorspace, const char *to_colorspace)
const char * IMB_colormanagement_get_float_colorspace(struct ImBuf *ibuf)
void nearest_interpolation(struct ImBuf *in, struct ImBuf *out, float u, float v, int xout, int yout)
struct ImBuf * IMB_makeSingleUser(struct ImBuf *ibuf)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_freeImBuf(struct ImBuf *ibuf)
void IMB_filtery(struct ImBuf *ibuf)
void imb_freerectImBuf(struct ImBuf *ibuf)
void IMB_processor_apply_threaded(int buffer_lines, int handle_size, void *init_customdata, void(init_handle)(void *handle, int start_line, int tot_line, void *customdata), void *(do_thread)(void *))
void IMB_ImBufFromStereo3d(struct Stereo3dFormat *s3d, struct ImBuf *ibuf_stereo, struct ImBuf **r_ibuf_left, struct ImBuf **r_ibuf_right)
bool addzbuffloatImBuf(struct ImBuf *ibuf)
void IMB_saturation(struct ImBuf *ibuf, float sat)
bool imb_addrectfloatImBuf(struct ImBuf *ibuf)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
void IMB_flipx(struct ImBuf *ibuf)
struct ImBuf * IMB_anim_absolute(struct anim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
void IMB_flipy(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
SIMD_FORCE_INLINE btVector3 transform(const btVector3 &point) const
static void mul(btAlignedObjectArray< T > &items, const Q &value)
const Depsgraph * depsgraph
struct SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
int SEQ_effect_get_num_inputs(int seq_type)
struct SeqEffectHandle seq_effect_get_sequence_blend(Sequence *seq)
float seq_speed_effect_target_frame_get(const SeqRenderData *context, Sequence *seq, float timeline_frame, int input)
bool seq_cache_put_if_possible(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type, ImBuf *ibuf)
void seq_cache_put(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type, ImBuf *i)
void seq_cache_free_temp_cache(Scene *scene, short id, int timeline_frame)
struct ImBuf * seq_cache_get(const SeqRenderData *context, Sequence *seq, float timeline_frame, int type)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
BLI_INLINE void bilinear_interpolation(const unsigned char *byte_buffer, const float *float_buffer, unsigned char *byte_output, float *float_output, int width, int height, int components, float u, float v, bool wrap_x, bool wrap_y)
int seq_num_files(Scene *scene, char views_format, const bool is_multiview)
void seq_multiview_name(Scene *scene, const int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size)
void RE_ReleaseResultImage(Render *re)
Render * RE_GetSceneRender(const Scene *scene)
void RE_RenderFrame(Render *re, Main *bmain, Scene *scene, ViewLayer *single_layer, Object *camera_override, int frame, const bool write_still)
void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
Render * RE_NewSceneRender(const Scene *scene)
void seq_prefetch_start(const SeqRenderData *context, float timeline_frame)
int SEQ_rendersize_to_proxysize(int render_size)
ImBuf * seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int timeline_frame)
bool SEQ_can_use_proxy(const struct SeqRenderData *context, Sequence *seq, int psize)
double SEQ_rendersize_to_scale_factor(int render_size)
bool seq_proxy_get_custom_file_fname(Sequence *seq, char *name, const int view_id)
static ImBuf * seq_render_mask_strip(const SeqRenderData *context, Sequence *seq, float frame_index)
static ImBuf * seq_render_preprocess_ibuf(const SeqRenderData *context, Sequence *seq, ImBuf *ibuf, float timeline_frame, bool use_preprocess, const bool is_proxy_image)
static ImBuf * seq_render_strip_stack_apply_effect(const SeqRenderData *context, Sequence *seq, float timeline_frame, ImBuf *ibuf1, ImBuf *ibuf2)
ImBuf * SEQ_render_give_ibuf(const SeqRenderData *context, float timeline_frame, int chanshown)
static ImBuf * seq_render_image_strip(const SeqRenderData *context, Sequence *seq, float UNUSED(frame_index), float timeline_frame, bool *r_is_proxy_image)
static ImBuf * seq_render_strip_stack(const SeqRenderData *context, SeqRenderState *state, ListBase *seqbasep, float timeline_frame, int chanshown)
static void * render_effect_execute_do_thread(void *thread_data_v)
static ImBuf * input_preprocess(const SeqRenderData *context, Sequence *seq, float timeline_frame, ImBuf *ibuf, const bool is_proxy_image)
static bool seq_input_have_to_preprocess(const SeqRenderData *context, Sequence *seq, float UNUSED(timeline_frame))
static ImBuf * seq_render_scene_strip(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame)
SequencerDrawView sequencer_view3d_fn
static ThreadMutex seq_render_mutex
static int seq_get_early_out_for_blend_mode(Sequence *seq)
ImBuf * seq_render_mask(const SeqRenderData *context, Mask *mask, float frame_index, bool make_float)
struct RenderEffectInitData RenderEffectInitData
ImBuf * seq_render_effect_execute_threaded(struct SeqEffectHandle *sh, const SeqRenderData *context, Sequence *seq, float timeline_frame, float facf0, float facf1, ImBuf *ibuf1, ImBuf *ibuf2, ImBuf *ibuf3)
static ImBuf * do_render_strip_seqbase(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float frame_index)
struct ImageTransformThreadData ImageTransformThreadData
StripElem * SEQ_render_give_stripelem(Sequence *seq, int timeline_frame)
static ImBuf * do_render_strip_uncached(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame, bool *r_is_proxy_image)
static ImBuf * seq_render_effect_strip_impl(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
ImBuf * SEQ_render_give_ibuf_direct(const SeqRenderData *context, float timeline_frame, Sequence *seq)
ImBuf * seq_render_give_ibuf_seqbase(const SeqRenderData *context, float timeline_frame, int chan_shown, ListBase *seqbasep)
static ImBuf * seq_render_movie_strip_view(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame, StripAnim *sanim, bool *r_is_proxy_image)
int SEQ_render_evaluate_frame(ListBase *seqbase, int timeline_frame)
static bool video_seq_is_rendered(Sequence *seq)
static void sequencer_image_crop_transform_init(void *handle_v, int start_line, int tot_line, void *init_data_v)
void SEQ_render_new_render_data(Main *bmain, struct Depsgraph *depsgraph, Scene *scene, int rectx, int recty, int preview_render_size, int for_render, SeqRenderData *r_context)
ImBuf * seq_render_strip(const SeqRenderData *context, SeqRenderState *state, Sequence *seq, float timeline_frame)
void seq_imbuf_assign_spaces(Scene *scene, ImBuf *ibuf)
static void multibuf(ImBuf *ibuf, const float fmul)
struct RenderEffectThread RenderEffectThread
static bool seq_need_scale_to_render_size(const Sequence *seq, bool is_proxy_image)
static bool seq_must_swap_input_in_blend_mode(Sequence *seq)
static ImBuf * seq_render_movieclip_strip(const SeqRenderData *context, Sequence *seq, float frame_index, bool *r_is_proxy_image)
static void * sequencer_image_crop_transform_do_thread(void *data_v)
void seq_render_state_init(SeqRenderState *state)
int seq_get_shown_sequences(ListBase *seqbasep, int timeline_frame, int chanshown, Sequence **seq_arr_out)
static bool sequencer_use_crop(const Sequence *seq)
static bool seq_image_strip_is_multiview_render(Scene *scene, Sequence *seq, int totfiles, char *name, char *r_prefix, const char *r_ext)
static ImBuf * seq_render_movie_strip(const SeqRenderData *context, Sequence *seq, float frame_index, float timeline_frame, bool *r_is_proxy_image)
static bool sequencer_use_transform(const Sequence *seq)
static ImBuf * seq_render_movie_strip_custom_file_proxy(const SeqRenderData *context, Sequence *seq, int timeline_frame)
void seq_imbuf_to_sequencer_space(Scene *scene, ImBuf *ibuf, bool make_float)
struct ImageTransformThreadInitData ImageTransformThreadInitData
void SEQ_render_imbuf_from_sequencer_space(Scene *scene, ImBuf *ibuf)
static int evaluate_seq_frame_gen(Sequence **seq_arr, ListBase *seqbase, int timeline_frame, int chanshown)
static ImBuf * seq_get_movieclip_ibuf(Sequence *seq, MovieClipUser user)
static ImBuf * seq_render_image_strip_view(const SeqRenderData *context, Sequence *seq, char *name, char *prefix, const char *ext, int view_id)
static void render_effect_execute_init_handle(void *handle_v, int start_line, int tot_line, void *init_data_v)
void SEQ_render_pixel_from_sequencer_space_v4(struct Scene *scene, float pixel[4])
#define EARLY_USE_INPUT_2
#define EARLY_USE_INPUT_1
struct SELECTID_Context context
ImBuf * SEQ_modifier_apply_stack(const SeqRenderData *context, Sequence *seq, ImBuf *ibuf, int timeline_frame)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
float seq_give_frame_index(Sequence *seq, float timeline_frame)
const SeqRenderData * context
struct SeqEffectHandle * sh
const SeqRenderData * context
struct SeqEffectHandle * sh
struct bNodeTree * nodetree
ColorManagedColorspaceSettings sequencer_colorspace_settings
int(* early_out)(struct Sequence *seq, float facf0, float facf1)
void(* get_default_fac)(struct Sequence *seq, float timeline_frame, float *facf0, float *facf1)
void(* execute_slice)(const struct SeqRenderData *context, struct Sequence *seq, float timeline_frame, float facf0, float facf1, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3, int start_line, int total_lines, struct ImBuf *out)
struct ImBuf *(* execute)(const struct SeqRenderData *context, struct Sequence *seq, float timeline_frame, float facf0, float facf1, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3)
struct ImBuf *(* init_execution)(const struct SeqRenderData *context, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3)
struct GPUOffScreen * gpu_offscreen
float motion_blur_shutter
struct Depsgraph * depsgraph
struct Object * scene_camera
struct Stereo3dFormat * stereo3d_format
ColorManagedColorspaceSettings colorspace_settings
StripTransform * transform
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
ListBase * SEQ_get_seqbase_from_sequence(Sequence *seq, int *r_offset)
void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)