stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
video_frame_processing_device_agent.h
1 #pragma once
2 
3 #include <string>
4 #include <map>
5 #include <vector>
6 #include <mutex>
7 
8 #include <nx/sdk/helpers/ref_countable.h>
9 #include <nx/sdk/helpers/log_utils.h>
10 
11 #include <nx/sdk/analytics/i_engine.h>
12 #include <nx/sdk/analytics/i_consuming_device_agent.h>
13 #include <nx/sdk/analytics/i_metadata_packet.h>
14 #include <nx/sdk/analytics/i_metadata_types.h>
15 #include <nx/sdk/analytics/i_compressed_video_packet.h>
16 #include <nx/sdk/analytics/i_uncompressed_video_frame.h>
17 
18 namespace nx {
19 namespace sdk {
20 namespace analytics {
21 
34 class VideoFrameProcessingDeviceAgent: public RefCountable<IConsumingDeviceAgent>
35 {
36 protected:
37  const LogUtils logUtils;
38 
39 protected:
46  IEngine* engine,
47  bool enableOutput,
48  const std::string& printPrefix = "");
49 
50  virtual std::string manifest() const = 0;
51 
59  virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket* /*videoFrame*/)
60  {
61  return true;
62  }
63 
70  virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame* /*videoFrame*/)
71  {
72  return true;
73  }
74 
81  virtual bool pullMetadataPackets(std::vector<IMetadataPacket*>* /*metadataPackets*/)
82  {
83  return true;
84  }
85 
90  void pushMetadataPacket(IMetadataPacket* metadataPacket);
91 
96  void pushPluginEvent(IPluginEvent::Level level, std::string caption, std::string description);
97 
102  virtual void settingsReceived() {}
103 
111  std::string getParamValue(const char* paramName);
112 
113  virtual Error setNeededMetadataTypes(const IMetadataTypes* metadataTypes) override = 0;
114 
115 public:
116  virtual ~VideoFrameProcessingDeviceAgent() override;
117 
122  template<typename DerivedEngine>
123  DerivedEngine* engineCasted() const
124  {
125  const auto engine = dynamic_cast<DerivedEngine*>(m_engine);
126  assertEngineCasted(engine);
127  return engine;
128  }
129 
130  virtual IEngine* engine() const override { return m_engine; }
131 
132 //-------------------------------------------------------------------------------------------------
133 // Not intended to be used by the descendant.
134 
135 public:
136  virtual Error setHandler(IDeviceAgent::IHandler* handler) override;
137  virtual Error pushDataPacket(IDataPacket* dataPacket) override;
138  virtual const IString* manifest(Error* error) const override;
139  virtual void setSettings(const nx::sdk::IStringMap* settings) override;
140  virtual nx::sdk::IStringMap* pluginSideSettings() const override;
141 
142 private:
143  void assertEngineCasted(void* engine) const;
144  void processMetadataPackets(const std::vector<IMetadataPacket*>& metadataPackets);
145 
146 private:
147  mutable std::mutex m_mutex;
148  IEngine* const m_engine;
149  IDeviceAgent::IHandler* m_handler = nullptr;
150  std::map<std::string, std::string> m_settings;
151 };
152 
153 } // namespace analytics
154 } // namespace sdk
155 } // namespace nx
void pushMetadataPacket(IMetadataPacket *metadataPacket)
Definition: video_frame_processing_device_agent.cpp:192
Definition: i_string_map.h:8
Definition: i_metadata_packet.h:17
virtual bool pullMetadataPackets(std::vector< IMetadataPacket *> *)
Definition: video_frame_processing_device_agent.h:81
virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame *)
Definition: video_frame_processing_device_agent.h:70
VideoFrameProcessingDeviceAgent(IEngine *engine, bool enableOutput, const std::string &printPrefix="")
Definition: video_frame_processing_device_agent.cpp:44
Definition: i_compressed_video_packet.h:14
std::string getParamValue(const char *paramName)
Definition: video_frame_processing_device_agent.cpp:234
Definition: i_engine.h:30
Definition: i_metadata_types.h:11
Definition: i_string.h:8
Definition: debug.cpp:13
Definition: log_utils.h:24
virtual void settingsReceived()
Definition: video_frame_processing_device_agent.h:102
Definition: video_frame_processing_device_agent.h:34
DerivedEngine * engineCasted() const
Definition: video_frame_processing_device_agent.h:123
virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket *)
Definition: video_frame_processing_device_agent.h:59
Definition: i_uncompressed_video_frame.h:11
void pushPluginEvent(IPluginEvent::Level level, std::string caption, std::string description)
Definition: video_frame_processing_device_agent.cpp:215
Definition: ref_countable.h:79