18struct LibmvFrameAccessor :
public FrameAccessor {
24 : user_data_(user_data),
25 get_image_callback_(get_image_callback),
26 release_image_callback_(release_image_callback),
27 get_mask_for_track_callback_(get_mask_for_track_callback),
28 release_mask_callback_(release_mask_callback) {}
30 virtual ~LibmvFrameAccessor() {}
34#define CHECK_INPUT_MODE(mode) \
35 case mode: return LIBMV_IMAGE_MODE_##mode;
38#undef CHECK_INPUT_MODE
40 assert(!
"unknown input mode passed from Libmv.");
45 void get_libmv_region(
const Region& region,
libmv_Region* libmv_region) {
46 libmv_region->
min[0] = region.min(0);
47 libmv_region->
min[1] = region.min(1);
48 libmv_region->
max[0] = region.max(0);
49 libmv_region->
max[1] = region.max(1);
52 Key GetImage(
int clip,
58 FloatImage* destination) {
63 get_libmv_region(*region, &libmv_region);
65 Key cache_key = get_image_callback_(user_data_,
68 get_libmv_input_mode(input_mode),
70 region !=
NULL ? &libmv_region :
NULL,
78 FloatImage temp_image(float_buffer, height, width, channels);
79 destination->CopyFrom(temp_image);
84 void ReleaseImage(
Key cache_key) { release_image_callback_(cache_key); }
86 Key GetMaskForTrack(
int clip,
90 FloatImage* destination) {
95 get_libmv_region(*region, &libmv_region);
98 get_mask_for_track_callback_(user_data_,
102 region !=
NULL ? &libmv_region :
NULL,
107 if (cache_key ==
NULL) {
113 FloatImage temp_image(float_buffer, height, width, 1);
114 destination->CopyFrom(temp_image);
119 void ReleaseMask(
Key key) { release_mask_callback_(key); }
121 bool GetClipDimensions(
int ,
int* ,
int* ) {
125 int NumClips() {
return 1; }
127 int NumFrames(
int ) {
return 0; }
147 release_image_callback,
148 get_mask_for_track_callback,
149 release_mask_callback);
158 return ((FrameAccessor::Transform*)transform)->key();
164 const FloatImage input(input_image->
buffer,
170 ((FrameAccessor::Transform*)transform)->run(input, &output);
172 int num_pixels = output.
Width() * output.Height() * output.Depth();
173 output_image->
buffer =
new float[num_pixels];
174 memcpy(output_image->
buffer, output.Data(), num_pixels *
sizeof(
float));
175 output_image->
width = output.Width();
176 output_image->
height = output.Height();
177 output_image->
channels = output.Depth();
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a producing a negative Combine Generate a color from its and blue channels(Deprecated)") DefNode(ShaderNode
3D array (row, column, channel).
void libmv_FrameAccessorDestroy(libmv_FrameAccessor *frame_accessor)
#define CHECK_INPUT_MODE(mode)
void libmv_frameAccessorgetTransformRun(const libmv_FrameTransform *transform, const libmv_FloatImage *input_image, libmv_FloatImage *output_image)
int64_t libmv_frameAccessorgetTransformKey(const libmv_FrameTransform *transform)
libmv_FrameAccessor * libmv_FrameAccessorNew(libmv_FrameAccessorUserData *user_data, libmv_GetImageCallback get_image_callback, libmv_ReleaseImageCallback release_image_callback, libmv_GetMaskForTrackCallback get_mask_for_track_callback, libmv_ReleaseMaskCallback release_mask_callback)
struct libmv_FrameTransform libmv_FrameTransform
libmv_CacheKey(* libmv_GetImageCallback)(libmv_FrameAccessorUserData *user_data, int clip, int frame, libmv_InputMode input_mode, int downscale, const libmv_Region *region, const libmv_FrameTransform *transform, float **destination, int *width, int *height, int *channels)
struct libmv_FrameAccessorUserData libmv_FrameAccessorUserData
libmv_CacheKey(* libmv_GetMaskForTrackCallback)(libmv_FrameAccessorUserData *user_data, int clip, int frame, int track, const libmv_Region *region, float **destination, int *width, int *height)
void(* libmv_ReleaseImageCallback)(libmv_CacheKey cache_key)
void(* libmv_ReleaseMaskCallback)(libmv_CacheKey cache_key)
struct libmv_FrameAccessor libmv_FrameAccessor
#define LIBMV_OBJECT_NEW(type,...)
#define LIBMV_OBJECT_DELETE(what, type)