-#ifndef _ENGINE_H_
-#define _ENGINE_H_
-
-#include<string>
-#include<sstream>
-#include<set>
-#include "Tracker.h"
-#include "Detector.h"
-#include "MultiTracker.h"
-#include "VideoReader.h"
-#include "SharedPtr.h"
-
-namespace suanzi{
-
-class EngineObserver;
-
-TK_DECLARE_PTR(Engine);
-
-class Engine
-{
-public:
- static EnginePtr create();
- void destroy();
- virtual ~Engine();
-
- virtual void start();
- void addObserver(EngineObserver* o);
- void setVideoSrc(VideoSrcType type, const std::string& url);
-
-private:
- Engine();
- void run();
- DetectorPtr detector;
- MultiTrackerPtr multiTracker;
- std::set<EngineObserver *> observer_list;
- //std::string videoSrc;
- VideoReaderPtr reader;
-};
-
-struct Person
-{
- typedef enum {
- Male,
- Female
- } Gender;
-
- typedef enum {
- Kid, // < 10
- Teenager, // 12 ~ 19
- Adult_2, // 20 - 30
- Adult_3, // 30 - 40
- Adult_4, // 40 - 50
- Adult_5, // 50 - 60
- Elder // > 60
- } Ages;
-
- unsigned long id = 0x001;
- Gender gender = Female;
- Ages age = Kid;
-
- std::string ageToString (Ages age){
- switch (age){
- case Kid: return "Kid";
- case Teenager: return "Teenager";
- default: return "no";
- }
- }
-
- std::string toString(){
- std::stringstream ss;
- ss << "Person: id=" << id << ". Gender:" << (gender == Gender::Male ? "Male" : "Female" ) <<
- ". Age: " << ageToString(age);
- return ss.str();
- }
-};
-
-class EngineObserver
-{
-public:
- //virtual void onPersonIn(std::set<Person> persons) = 0;
- virtual void onPersonIn(Person& p) = 0;
- virtual void onPersonOut(Person& p) = 0;
-};
-
-} // namespace suanzi
-
-#endif /* _ENGINE_H_ */