MediaServerSnap.hpp
1 //
2 // Created by xiong on 2020/10/27.
3 //
4 
5 #ifndef EMX_MediaServerSnap_HPP
6 #define EMX_MediaServerSnap_HPP
7 
8 #include "EmxCore.hpp"
9 #include "MediaServerBase.hpp"
10 #include "media/common/MediaInfSnap.hpp"
11 
12 namespace Emx {
18  public:
19  explicit MediaServerSnapChn(int32_t chn) : MediaServerModuleChnBase(MediaModE::Snap, chn) {}
20 
21  ~MediaServerSnapChn() override = default;
22 
23  void *GetParam() override { return &m_param; }
24 
25  void *GetNewParam() override { return &m_paramNew; }
26 
27  void *GetRunningParam() override { return &m_paramRunning; }
28 
29  int GetParamSize() override { return sizeof(Param); }
30 
31  ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override;
32 
33  ErrCodeE OnParamChanged() override { return ErrCodeE::Success; }
34 
36 
37  void OnServerDestroy() override;
38 
39  ErrCodeE Trigger(int32_t timeoutMs) override;
40 
41  protected:
47  virtual ErrCodeE GetOneSnap(std::vector<EmxData> &data) = 0;
48 
52  virtual void ReleaseOneSnap() = 0;
53 
54  private:
55  void OnTrigger(void *arg);
56 
57  void OnTriggerComplete(ErrCodeE e, void *arg);
58 
59  protected:
63 
64  private:
65  bool m_isSnapping;
66  EuvWork m_work;
67  std::vector<EmxData> m_data;
68  ErrCodeE m_getSnapErrCode;
69  };
70 
72  public:
74  };
76 }// namespace Emx
77 
78 #endif//EMX_MediaServerSnap_HPP
提供在EuvLoop内调用线程池执行阻塞耗时任务的机制
Definition: EuvWork.hpp:18
Definition: MediaInfSnap.hpp:15
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
Definition: MediaServerBase.hpp:18
Definition: MediaServerSnap.hpp:17
virtual void ReleaseOneSnap()=0
释放一帧抓拍图像,仅当GetOneSnap返回成功时此函数才会被执行
void * GetParam() override
Definition: MediaServerSnap.hpp:23
ErrCodeE Trigger(int32_t timeoutMs) override
ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override
Param m_paramRunning
Definition: MediaServerSnap.hpp:62
Param m_paramNew
Definition: MediaServerSnap.hpp:61
MediaServerSnapChn(int32_t chn)
Definition: MediaServerSnap.hpp:19
int GetParamSize() override
Definition: MediaServerSnap.hpp:29
void OnServerDestroy() override
void * GetRunningParam() override
Definition: MediaServerSnap.hpp:27
~MediaServerSnapChn() override=default
void * GetNewParam() override
Definition: MediaServerSnap.hpp:25
ErrCodeE OnServerCreate() override
Param m_param
Definition: MediaServerSnap.hpp:60
virtual ErrCodeE GetOneSnap(std::vector< EmxData > &data)=0
获取一帧抓拍图像
ErrCodeE OnParamChanged() override
Definition: MediaServerSnap.hpp:33
Definition: MediaServerSnap.hpp:71
MediaServerSnap()
Definition: MediaServerSnap.hpp:73
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ Success
成功
Definition: EmxGpio.hpp:10
缩略图持久化参数
Definition: MediaInfSnap.hpp:18