MediaServerAi.hpp
1 //
2 // Created by xiong on 2020/10/27.
3 //
4 
5 #ifndef EMX_MediaServerAi_HPP
6 #define EMX_MediaServerAi_HPP
7 
8 #include "MediaServerBase.hpp"
9 #include "core/euv/EuvWork.hpp"
10 #include "media/common/MediaInfAi.hpp"
11 #include "media/common/MediaInfAiData.hpp"
12 #include "media/common/MediaRingBuffer.hpp"
13 #include "media/server/EmxAiPlugin.h"
14 namespace Emx {
18  class MediaAiJob {
19  public:
20  using OnCallBack = std::function<void(void *arg)>;
21 
22  void Create(OnCallBack onWork, OnCallBack onWorkComplete, void *arg = nullptr, const std::string &threadName = "");
23 
24  virtual void Destroy();
25 
27 
28  private:
29  EuvWork m_work;
30  };
31 
35  public:
41  EmxAiPluginAlgBase(int chn, const char *name) : m_chn(chn), m_name(name) {}
42 
43  virtual ~EmxAiPluginAlgBase() {}
44 
50  virtual void Create(const char *workspace, Json::Value &param) {}
51 
55  virtual void Destroy() {}
56 
62  virtual ErrCodeE SetParam(const Json::Value &paramNew) { return ErrCodeE::Success; }
63 
64  const char *GetName() { return m_name.c_str(); }
65 
66  virtual ErrCodeE Ctrl(const Json::Value &in, Json::Value &out) {
68  }
69  protected:
70  int m_chn;
71  std::string m_name;
72  };
73 
75  public:
76  explicit MediaServerAiChn(int32_t chn) : MediaServerModuleChnBase(MediaModE::Ai, chn) {}
77 
78  ~MediaServerAiChn() override = default;
79 
80  ErrCodeE SetParam(const Json::Value &param);
81 
82  ErrCodeE GetParam(Json::Value &param);
83 
84  ErrCodeE GetParamDefault(Json::Value &param);
85 
86  ErrCodeE GetParamRange(Json::Value &range) override;
87 
88  ErrCodeE Ctrl(const Json::Value &in, Json::Value &out) override;
89 
90  protected:
91  ErrCodeE LoadParam(Json::Value &param);
92 
93  ErrCodeE SaveParam(const Json::Value &param);
94 
95  protected:
96  std::vector<EmxAiPluginAlgBase *> m_algs;
97 
98  private:
99  ErrCodeE GetVersion(std::string &version) { return ErrCodeE::Success; }
100  void *GetParam() override { return nullptr; }
101  void *GetNewParam() override { return nullptr; }
102  void *GetRunningParam() override { return nullptr; }
103  int GetParamSize() override { return 0; }
104  ErrCodeE OnParamChanged() override { return ErrCodeE::Success; }
105  ErrCodeE paramPathCheck();
106  private:
107  int m_private = 0;
108  };
109 
111  public:
112  MediaServerAi() : MediaServerModuleBase(MediaModE::Ai, "ai"), m_handle(nullptr), m_created(false) {}
113  void Create() override;
114  void Destroy() override;
115  ErrCodeE OnRecvReq(uint32_t method, int32_t chn, const char *data, int32_t size, std::string &out) override;
116 
117  private:
118  ErrCodeE VerifyPlugin();
119 
120  void CloseOpenedSo();
121 
122  private:
123  void *m_handle;
124  std::vector<void *> m_depArray;
125  bool m_created;
126  };
127 
129 }// namespace Emx
130 
131 #endif//EMX_MediaServerAi_HPP
算法基类
Definition: MediaServerAi.hpp:34
virtual ErrCodeE Ctrl(const Json::Value &in, Json::Value &out)
Definition: MediaServerAi.hpp:66
std::string m_name
Definition: MediaServerAi.hpp:71
virtual void Create(const char *workspace, Json::Value &param)
算法创建
Definition: MediaServerAi.hpp:50
virtual ErrCodeE SetParam(const Json::Value &paramNew)
算法参数改变
Definition: MediaServerAi.hpp:62
virtual ~EmxAiPluginAlgBase()
Definition: MediaServerAi.hpp:43
virtual void Destroy()
算法销毁
Definition: MediaServerAi.hpp:55
EmxAiPluginAlgBase(int chn, const char *name)
算法构造函数
Definition: MediaServerAi.hpp:41
int m_chn
Definition: MediaServerAi.hpp:70
const char * GetName()
Definition: MediaServerAi.hpp:64
提供在EuvLoop内调用线程池执行阻塞耗时任务的机制
Definition: EuvWork.hpp:18
Definition: MediaServerAi.hpp:18
std::function< void(void *arg)> OnCallBack
Definition: MediaServerAi.hpp:20
static ErrCodeE PushAiData(MediaInfAiData *data)
virtual void Destroy()
void Create(OnCallBack onWork, OnCallBack onWorkComplete, void *arg=nullptr, const std::string &threadName="")
Definition: MediaInfAiData.hpp:29
Definition: MediaInfAi.hpp:13
Definition: MediaServerAi.hpp:74
MediaServerAiChn(int32_t chn)
Definition: MediaServerAi.hpp:76
std::vector< EmxAiPluginAlgBase * > m_algs
Definition: MediaServerAi.hpp:96
ErrCodeE GetParamDefault(Json::Value &param)
~MediaServerAiChn() override=default
ErrCodeE SaveParam(const Json::Value &param)
ErrCodeE GetParam(Json::Value &param)
ErrCodeE Ctrl(const Json::Value &in, Json::Value &out) override
ErrCodeE GetParamRange(Json::Value &range) override
ErrCodeE LoadParam(Json::Value &param)
ErrCodeE SetParam(const Json::Value &param)
Definition: MediaServerAi.hpp:110
MediaServerAi()
Definition: MediaServerAi.hpp:112
void Destroy() override
void Create() override
ErrCodeE OnRecvReq(uint32_t method, int32_t chn, const char *data, int32_t size, std::string &out) override
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
Definition: MediaServerBase.hpp:18
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ OperationNotSupport
操作不支持
@ Success
成功
Definition: EmxGpio.hpp:10