-#ifndef EDGE_H
-#define EDGE_H
+#ifndef __CRIKEY_H__
+#define __CRIKEY_H__
#include "loadbalance.h"
#include "pluginvclient.h"
#define DRAW_MASK 2
#define DRAW_MODES 3
-#define KEY_SEARCH 0
-#define KEY_SEARCH_ALL 1
-#define KEY_POINT 2
-#define KEY_MODES 3
+enum { PT_E, PT_X, PT_Y, PT_T, PT_TAG, PT_SZ }; // enable, x,y,threshold, tag
+
+class CriKeyPoint
+{
+public:
+ int tag, e;
+ float x, y, t;
+
+ CriKeyPoint(int tag, int e, float x, float y, float t);
+ ~CriKeyPoint();
+};
+class CriKeyPoints : public ArrayList<CriKeyPoint *>
+{
+public:
+ CriKeyPoints() {}
+ ~CriKeyPoints() { remove_all_objects(); }
+};
class CriKeyConfig
{
public:
CriKeyConfig();
+ ~CriKeyConfig();
int equivalent(CriKeyConfig &that);
void copy_from(CriKeyConfig &that);
void interpolate(CriKeyConfig &prev, CriKeyConfig &next,
long prev_frame, long next_frame, long current_frame);
void limits();
- static void set_target(int is_yuv, int color, float *target);
- static void set_color(int is_yuv, float *target, int &color);
- int color;
+ CriKeyPoints points;
+ int add_point(int tag, int e, float x, float y, float t);
+ int add_point();
+ void del_point(int i);
+
float threshold;
- int draw_mode, key_mode;
- float point_x, point_y;
- int drag;
+ int draw_mode;
+ int drag, selected;
};
class CriKeyPackage : public LoadPackage
LoadClient* new_client();
CriKey *plugin;
+ int set_color(int x, int y, float t);
+ float color[3], threshold;
};
class CriKeyUnit : public LoadClient
PLUGIN_CLASS_MEMBERS2(CriKeyConfig)
int is_realtime();
void update_gui();
+ int new_point();
+ int set_target(float *color, int x, int y);
void save_data(KeyFrame *keyframe);
void read_data(KeyFrame *keyframe);
int process_buffer(VFrame *frame, int64_t start_position, double frame_rate);
void draw_alpha(VFrame *msk);
- void draw_mask(VFrame *msk);
- float diff_uint8(uint8_t *tp);
- float diff_float(uint8_t *tp);
- float (CriKey::*diff_pixel)(uint8_t *dp);
- void min_key(int &ix, int &iy);
- bool find_key(int &ix, int &iy, float threshold);
- static void set_target(int is_yuv, int color, float *target) {
- CriKeyConfig::set_target(is_yuv, color, target);
- }
- static void set_color(int is_yuv, float *target, int &color) {
- CriKeyConfig::set_color(is_yuv, target, color);
- }
+ void draw_edge(VFrame *frm);
+ void draw_mask(VFrame *frm);
+ void draw_point(VFrame *msk, CriKeyPoint *pt);
CriKeyEngine *engine;
- VFrame *src, *dst, *msk;
- int w, h, color_model, bpp, comp, is_yuv, is_float;
-
- void get_color(int x, int y);
- float target[3];
+ VFrame *src, *edg, *msk;
+ int w, h, color_model, bpp, comp;
+ int is_yuv, is_float;
};
#endif