MediaServerQrScan.hpp
1 //
2 // Created by xiong on 2021/6/25.
3 //
4 
5 #ifndef EMX_MediaServerQrScan_HPP
6 #define EMX_MediaServerQrScan_HPP
7 
8 #include "MediaServerBase.hpp"
9 #include "core/euv/EuvWork.hpp"
10 #include "media/common/MediaInfQrScan.hpp"
11 #include "media/common/MediaRegion.hpp"
12 
13 namespace Emx {
17  class PanoQrPreProcess;
18 
20  public:
21  explicit MediaServerQrScanChn(int32_t chn) : MediaServerModuleChnBase(MediaModE::QrScan, chn) , m_started(false) {}
22 
23  ~MediaServerQrScanChn() override = default;
24 
25  void *GetParam() override { return &m_param; }
26 
27  void *GetNewParam() override { return &m_paramNew; }
28 
29  void *GetRunningParam() override { return &m_paramRunning; }
30 
31  int GetParamSize() override { return sizeof(Param); }
32 
33  ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override;
34 
35  void OnServerDestroy() override {
36  Stop();
37  OnDestroy();
38  }
39 
40  ErrCodeE OnParamChanged() override { return ErrCodeE::Success; }
41 
42  ErrCodeE Start() override;
43 
44  ErrCodeE Stop() override;
45 
46  protected:
51  virtual Size GetChnImgSize() = 0;
52 
58  virtual ErrCodeE GetOneImg(uint8_t **dataY) = 0;
59 
64  virtual void ReleaseOneImg(uint8_t *dataY) = 0;
65 
66  virtual void OnQrScanRun(void *arg);
67 
68  virtual void OnQrScanComplete(ErrCodeE e, void *arg);
69 
70  ErrCodeE Decode(uint8_t *data);
71 
72  private:
73  ErrCodeE CreatePanoPreProcess(Json::Value &json);
74 
75  void DestroyPanoPreProcess();
76 
77  ErrCodeE DoDecode(void *data, int w, int h, std::string &content);
78 
79  protected:
80  bool m_started;
82  enum class QrTypeE : uint8_t {
83  Normal,
84  Panorama,
85  } m_type;
86  PanoQrPreProcess *m_pano;
87  std::string m_mapX;
88  std::string m_mapY;
91  uint8_t *m_dataY;
92  bool m_got;
93  std::string m_content;
97 
99  };
100 
102  public:
104  };
106 }// namespace Emx
107 
108 #endif//EMX_MediaServerQrScan_HPP
提供在EuvLoop内调用线程池执行阻塞耗时任务的机制
Definition: EuvWork.hpp:18
Definition: MediaInfQrScan.hpp:15
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
Definition: MediaServerBase.hpp:18
virtual void OnDestroy()=0
销毁模块通道
Definition: MediaServerQrScan.hpp:19
int m_scanDelayMs
扫描延时,降低cpu使用
Definition: MediaServerQrScan.hpp:98
virtual void ReleaseOneImg(uint8_t *dataY)=0
释放一帧原始图像,仅当GetOneImg返回成功时此函数才会被执行
ErrCodeE m_getImgErrCode
Definition: MediaServerQrScan.hpp:90
ErrCodeE Stop() override
Param m_paramRunning
Definition: MediaServerQrScan.hpp:96
std::string m_mapY
Definition: MediaServerQrScan.hpp:88
enum Emx::MediaServerQrScanChn::QrTypeE m_type
ErrCodeE Decode(uint8_t *data)
EuvWork m_work
Definition: MediaServerQrScan.hpp:89
int GetParamSize() override
Definition: MediaServerQrScan.hpp:31
ErrCodeE Start() override
uint8_t * m_dataY
Definition: MediaServerQrScan.hpp:91
void OnServerDestroy() override
Definition: MediaServerQrScan.hpp:35
std::string m_mapX
Definition: MediaServerQrScan.hpp:87
ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) override
void * GetNewParam() override
Definition: MediaServerQrScan.hpp:27
virtual void OnQrScanRun(void *arg)
Param m_param
Definition: MediaServerQrScan.hpp:94
MediaServerQrScanChn(int32_t chn)
Definition: MediaServerQrScan.hpp:21
virtual void OnQrScanComplete(ErrCodeE e, void *arg)
std::string m_content
Definition: MediaServerQrScan.hpp:93
PanoQrPreProcess * m_pano
Definition: MediaServerQrScan.hpp:86
~MediaServerQrScanChn() override=default
virtual ErrCodeE GetOneImg(uint8_t **dataY)=0
获取一帧原始图像
Param m_paramNew
Definition: MediaServerQrScan.hpp:95
QrTypeE
Definition: MediaServerQrScan.hpp:82
virtual Size GetChnImgSize()=0
获取通道图像大小
void * GetParam() override
Definition: MediaServerQrScan.hpp:25
void * GetRunningParam() override
Definition: MediaServerQrScan.hpp:29
bool m_started
Definition: MediaServerQrScan.hpp:80
bool m_got
Definition: MediaServerQrScan.hpp:92
Size m_imgSize
Definition: MediaServerQrScan.hpp:81
ErrCodeE OnParamChanged() override
Definition: MediaServerQrScan.hpp:40
Definition: MediaServerQrScan.hpp:101
MediaServerQrScan()
Definition: MediaServerQrScan.hpp:103
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ Success
成功
Definition: EmxGpio.hpp:10
扫码持久化参数
Definition: MediaInfQrScan.hpp:18
图像大小
Definition: MediaRegion.hpp:25