stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
engine.h
1 #pragma once
2 
3 #include <atomic>
4 #include <thread>
5 #include <memory>
6 #include <mutex>
7 #include <condition_variable>
8 
9 #include <nx/sdk/uuid.h>
10 #include <nx/sdk/analytics/helpers/engine.h>
11 #include <nx/sdk/analytics/i_uncompressed_video_frame.h>
12 
13 namespace nx {
14 namespace vms_server_plugins {
15 namespace analytics {
16 namespace stub {
17 
19 {
20 public:
21  using PixelFormat = nx::sdk::analytics::IUncompressedVideoFrame::PixelFormat;
22 
24  virtual ~Engine() override;
25 
26  virtual nx::sdk::analytics::IDeviceAgent* obtainDeviceAgent(
27  const nx::sdk::IDeviceInfo* deviceInfo, nx::sdk::Error* outError) override;
28 
29  // Capabilities.
30  bool needUncompressedVideoFrames() const { return m_needUncompressedVideoFrames; }
31  PixelFormat pixelFormat() const { return m_pixelFormat; }
32 
33 protected:
34  virtual std::string manifest() const override;
35 
36  virtual void settingsReceived() override;
37 
38  virtual void executeAction(
39  const std::string& actionId,
40  nx::sdk::Uuid objectId,
41  nx::sdk::Uuid deviceId,
42  int64_t timestampUs,
43  const std::map<std::string, std::string>& params,
44  std::string* outActionUrl,
45  std::string* outMessageToUser,
46  nx::sdk::Error* error) override;
47 
48 private:
49  void initCapabilities();
50  void generatePluginEvents();
51 
52 private:
53  mutable std::mutex m_pluginEventGenerationLoopMutex;
54  mutable std::condition_variable m_pluginEventGenerationLoopCondition;
55 
56  std::unique_ptr<std::thread> m_thread;
57  bool m_terminated = false;
58 
59  std::string m_capabilities;
60  bool m_needUncompressedVideoFrames = false;
61  PixelFormat m_pixelFormat = PixelFormat::yuv420;
62 };
63 
64 } // namespace stub
65 } // namespace analytics
66 } // namespace vms_server_plugins
67 } // namespace nx
virtual void settingsReceived()
Definition: engine.h:49
Definition: i_plugin.h:17
Definition: uuid.h:17
Definition: i_device_info.h:12
Definition: debug.cpp:13
Definition: i_device_agent.h:28
Engine(IPlugin *plugin, bool enableOutput, const std::string &printPrefix="")
Definition: engine.cpp:41
virtual void executeAction(const std::string &, Uuid, Uuid, int64_t, const std::map< std::string, std::string > &, std::string *, std::string *, Error *)
Definition: engine.h:68
Definition: engine.h:28