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/analytics/common_engine.h>
10 #include <nx/sdk/analytics/uncompressed_video_frame.h>
11 
12 namespace nx {
13 namespace mediaserver_plugins {
14 namespace analytics {
15 namespace stub {
16 
17 using PixelFormat = nx::sdk::analytics::UncompressedVideoFrame::PixelFormat;
18 
20 {
21 public:
23  virtual ~Engine() override;
24 
26  const nx::sdk::DeviceInfo* deviceInfo, nx::sdk::Error* outError) override;
27 
28  // Capabilities.
29  bool needUncompressedVideoFrames() const { return m_needUncompressedVideoFrames; }
30  PixelFormat pixelFormat() const { return m_pixelFormat; }
31 
32 protected:
33  virtual std::string manifest() const override;
34 
35  virtual void settingsReceived() override;
36 
37  virtual void executeAction(
38  const std::string& actionId,
39  nxpl::NX_GUID objectId,
40  nxpl::NX_GUID deviceId,
41  int64_t timestampUs,
42  const std::map<std::string, std::string>& params,
43  std::string* outActionUrl,
44  std::string* outMessageToUser,
45  nx::sdk::Error* error) override;
46 
47 private:
48  void initCapabilities();
49  void processPluginEvents();
50 
51 private:
52  mutable std::mutex m_pluginEventGenerationLoopMutex;
53  mutable std::condition_variable m_pluginEventGenerationLoopCondition;
54 
55  std::unique_ptr<std::thread> m_thread;
56  std::atomic<bool> m_terminated{false};
57 
58  std::string m_capabilities;
59  bool m_needUncompressedVideoFrames = false;
60  PixelFormat m_pixelFormat = PixelFormat::yuv420;
61 };
62 
63 } // namespace stub
64 } // namespace analytics
65 } // namespace mediaserver_plugins
66 } // namespace nx
virtual const IString * manifest(Error *outError) const =0
Definition: device_agent.h:36
virtual DeviceAgent * obtainDeviceAgent(const DeviceInfo *deviceInfo, Error *outError)=0
Definition: engine.cpp:32
Definition: common_engine.h:28
Definition: common.h:6
virtual void executeAction(Action *action, Error *outError)=0
GUID of plugin interface.
Definition: plugin_api.h:21
Definition: debug.cpp:14
virtual Plugin * plugin() const =0
virtual void settingsReceived() override
Definition: engine.cpp:221
Definition: engine.h:37
Definition: plugin.h:27