101 if (!movie_clip_buffer) {
102 result.allocate_invalid();
106 const int2 size =
int2(movie_clip_buffer->
x, movie_clip_buffer->
y);
127 if (!movie_clip_buffer) {
128 result.allocate_single_value();
129 result.set_single_value(1.0f);
133 const int2 size =
int2(movie_clip_buffer->
x, movie_clip_buffer->
y);
140 int64_t input_pixel_index = pixel_index * 4;
141 alpha_values[pixel_index] = movie_clip_buffer->
float_buffer.
data[input_pixel_index + 3];
156 if (!movie_clip_buffer) {
159 result.allocate_single_value();
160 result.set_single_value(0.0f);
164 result.allocate_single_value();
165 result.set_single_value(0.0f);
169 result.allocate_single_value();
170 result.set_single_value(1.0f);
174 result.allocate_single_value();
175 result.set_single_value(0.0f);
183 const int width = movie_clip_buffer->
x;
184 const int height = movie_clip_buffer->
y;
191 movie_clip, frame_number, width, height, offset, &scale, &
angle);
195 result.allocate_single_value();
196 result.set_single_value(offset.x);
200 result.allocate_single_value();
201 result.set_single_value(offset.y);
205 result.allocate_single_value();
206 result.set_single_value(scale);
210 result.allocate_single_value();
228 if (!movie_clip_buffer) {
233 return movie_clip_buffer;
242 return movie_clip_buffer;
272 "Input image or movie from a movie clip datablock, typically used for motion tracking";
275 ntype.
declare = file_ns::cmp_node_movieclip_declare;
276 ntype.
draw_buttons = file_ns::node_composit_buts_movieclip;
Scene * CTX_data_scene(const bContext *C)
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
struct ImBuf * BKE_movieclip_get_ibuf(struct MovieClip *clip, const struct MovieClipUser *user)
#define CMP_NODE_MOVIECLIP
void BKE_tracking_stabilization_data_get(struct MovieClip *clip, int framenr, int width, int height, float translation[2], float *scale, float *angle)
#define DNA_struct_default_alloc(struct_name)
void GPU_texture_update(GPUTexture *texture, eGPUDataFormat data_format, const void *data)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
void IMB_freeImBuf(ImBuf *ibuf)
void IMB_float_from_byte(ImBuf *ibuf)
#define NOD_REGISTER_NODE(REGISTER_FUNC)
void uiTemplateID(uiLayout *layout, const bContext *C, PointerRNA *ptr, blender::StringRefNull propname, const char *newop, const char *openop, const char *unlinkop, int filter=UI_TEMPLATE_ID_FILTER_ALL, bool live_icon=false, std::optional< blender::StringRef > text=std::nullopt)
void uiTemplateColorspaceSettings(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
const bNode & bnode() const
bool should_compute_output(StringRef identifier)
NodeOperation(Context &context, DNode node)
Result & get_result(StringRef identifier)
Context & context() const
void compute_stabilization_data(ImBuf *movie_clip_buffer)
void compute_image(ImBuf *movie_clip_buffer)
void compute_alpha(ImBuf *movie_clip_buffer)
ImBuf * get_movie_clip_buffer()
MovieClipUser * get_movie_clip_user()
MovieClip * get_movie_clip()
NodeOperation(Context &context, DNode node)
void node_register_type(bNodeType &ntype)
void node_type_storage(bNodeType &ntype, std::optional< StringRefNull > storagename, void(*freefunc)(bNode *node), void(*copyfunc)(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node))
void parallel_for(const int2 range, const Function &function)
static void cmp_node_movieclip_declare(NodeDeclarationBuilder &b)
static void node_composit_buts_movieclip_ex(uiLayout *layout, bContext *C, PointerRNA *ptr)
static NodeOperation * get_compositor_operation(Context &context, DNode node)
static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, PointerRNA *ptr)
VecBase< float, 4 > float4
VecBase< int32_t, 2 > int2
VecBase< float, 2 > float2
static void register_node_type_cmp_movieclip()
void cmp_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
void node_free_standard_storage(bNode *node)
void node_copy_standard_storage(bNodeTree *, bNode *dest_node, const bNode *src_node)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
ImBufFloatBuffer float_buffer
std::string ui_description
NodeGetCompositorOperationFunction get_compositor_operation
void(* draw_buttons_ex)(uiLayout *, bContext *C, PointerRNA *ptr)
const char * enum_name_legacy
void(* draw_buttons)(uiLayout *, bContext *C, PointerRNA *ptr)
NodeDeclareFunction declare
void(* initfunc_api)(const bContext *C, PointerRNA *ptr)