13 #ifndef JSONOBJECTSTRACKER_H
14 #define JSONOBJECTSTRACKER_H
21 #include <boost/shared_ptr.hpp>
23 #if defined( WIN32 ) && defined( _MSC_VER )
27 #include "AbstractObjectsTracker.h"
30 #define OBJEVT_COUNT 2
32 #define MILLION 1000000
34 namespace Json {
class Value; }
39 void setFrameTime(
struct timeval* tv ) { frame_time = tv->tv_sec * (
long long) MILLION + tv->tv_usec; }
40 long long frameTime() {
return frame_time; }
47 virtual void setObjectsData(
const std::string& Bitstream,
const std::map< std::string, std::vector< std::string > >& VisibleMetadata);
56 void log_debug(
const std::string& msg ) { Logger::debug( msg ); }
62 virtual ~RenderObject();
63 void setObj(
long long now,
double Lifetime,
int LineWidth,
Color ObjectColor );
64 void setObj(
const RenderObject& ro );
66 bool isAlive(
long long now )
const;
73 typedef boost::shared_ptr< RenderObject > RenderObjectPtr;
75 class BBObject :
public RenderObject
83 typedef boost::shared_ptr< BBObject > BBObjectPtr;
85 class MLine :
public RenderObject
92 std::vector< Point2 > points;
95 typedef boost::shared_ptr< MLine > MLinePtr;
97 class Polygon :
public MLine
102 typedef boost::shared_ptr< Polygon > PolygonPtr;
104 class Text :
public RenderObject
114 typedef boost::shared_ptr< Text > TextPtr;
116 class Metadata :
public Text
123 typedef boost::shared_ptr< Metadata > MetadataPtr;
125 typedef std::map< std::string, BBObjectPtr > bboxes_map_t;
126 typedef std::map< std::string, RenderObjectPtr > object2_map_t;
127 typedef std::map< std::string, object2_map_t > object_map_t;
128 typedef std::list< RenderObjectPtr > objects_list_t;
131 bool parseMLPVertecies( MLinePtr ml,
const Json::Value& jsPoints );
132 std::list< RenderObjectPtr > parseMLinePolygon(
int mp,
const Json::Value& js,
const Json::Value& parent,
const std::string& extraInfo = std::string() );
133 TextPtr parseTextMetadata(
int tm,
const Json::Value& js,
const Json::Value& parent,
const std::string& extraInfo = std::string() );
134 void parseRootObject(
const Json::Value& js );
139 static const char* objs_evts[OBJEVT_COUNT];
140 static const char* ml_pg[MLPG_COUNT];
141 static std::set< std::string > notObjIds;
143 static std::set< std::string > genNotObjsIds();
144 static const Json::Value getProp(
const char* prop,
const Json::Value& js,
const Json::Value& parent );
147 bboxes_map_t bboxes[OBJEVT_COUNT];
149 objects_list_t objects;
165 std::vector<int> xPoints;
166 std::vector<int> yPoints;
167 const std::map< std::string, std::vector< std::string > >* visibleMetadata;
170 #endif // JSONOBJECTSTRACKER_H