nx_metadata_sdk  1.0
Metadata SDK
consuming_device_agent.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #pragma once
4 
5 #include <map>
6 #include <mutex>
7 #include <string>
8 #include <vector>
9 
10 #include <nx/sdk/analytics/i_compound_metadata_packet.h>
11 #include <nx/sdk/analytics/i_compressed_video_packet.h>
12 #include <nx/sdk/analytics/i_consuming_device_agent.h>
13 #include <nx/sdk/analytics/i_custom_metadata_packet.h>
14 #include <nx/sdk/analytics/i_engine.h>
15 #include <nx/sdk/analytics/i_metadata_types.h>
16 #include <nx/sdk/analytics/i_uncompressed_video_frame.h>
17 #include <nx/sdk/helpers/log_utils.h>
18 #include <nx/sdk/helpers/ref_countable.h>
19 #include <nx/sdk/ptr.h>
20 
21 namespace nx::sdk::analytics {
22 
35 class ConsumingDeviceAgent: public RefCountable<IConsumingDeviceAgent>
36 {
37 protected:
38  const LogUtils logUtils;
39 
40 protected:
46  const IDeviceInfo* deviceInfo,
47  bool enableOutput,
48  const std::string& pluginInstanceId = "");
49 
50  virtual std::string manifestString() const = 0;
51 
57  virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket* videoFrame);
58 
63  virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame* videoFrame);
64 
69  virtual bool pushCustomMetadataPacket(const ICustomMetadataPacket* /*customMetadataPacket*/)
70  {
71  return true;
72  }
73 
80  virtual bool pullMetadataPackets(std::vector<IMetadataPacket*>* metadataPackets);
81 
86  void pushMetadataPacket(IMetadataPacket* metadataPacket);
87 
94  IPluginDiagnosticEvent::Level level,
95  std::string caption,
96  std::string description) const;
97 
104  {
105  return nullptr;
106  }
107 
117  std::string settingValue(const std::string& settingName) const;
118 
119  std::map<std::string, std::string> currentSettings() const;
120 
121  void pushManifest(const std::string& pushManifest);
122 
123  virtual void finalize() override;
124 
125  virtual void doGetSettingsOnActiveSettingChange(
127  const IActiveSettingChangedAction* activeSettingChangedAction) override;
128 
129 public:
130  virtual ~ConsumingDeviceAgent() override;
131 
132 //-------------------------------------------------------------------------------------------------
133 // Not intended to be used by the descendant.
134 
135 public:
136  virtual void setHandler(IHandler* handler) override;
137 
138 protected:
139  virtual void doPushDataPacket(Result<void>* outResult, IDataPacket* dataPacket) override;
140  virtual void doSetSettings(
141  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) override;
142  virtual void getPluginSideSettings(Result<const ISettingsResponse*>* outResult) const override;
143  virtual void getManifest(Result<const IString*>* outResult) const override;
144 
145 private:
146  void logMetadataPacketIfNeeded(
147  const IMetadataPacket* metadataPacket,
148  int packetIndex) const;
149  void processMetadataPackets(const std::vector<IMetadataPacket*>& metadataPackets);
150  void processMetadataPacket(IMetadataPacket* metadataPacket, int packetIndex /*= -1*/);
151 
152 private:
153  mutable std::mutex m_mutex;
154  Ptr<IDeviceAgent::IHandler> m_handler;
155  std::map<std::string, std::string> m_settings;
156 };
157 
158 } // namespace nx::sdk::analytics
Definition: i_string_map.h:9
Definition: i_metadata_packet.h:13
Definition: i_active_setting_changed_action.h:14
virtual bool pullMetadataPackets(std::vector< IMetadataPacket *> *metadataPackets)
Definition: consuming_device_agent.cpp:60
void pushPluginDiagnosticEvent(IPluginDiagnosticEvent::Level level, std::string caption, std::string description) const
Definition: consuming_device_agent.cpp:213
Definition: i_compressed_video_packet.h:31
virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket *videoFrame)
Definition: consuming_device_agent.cpp:48
std::string settingValue(const std::string &settingName) const
Definition: consuming_device_agent.cpp:235
virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame *videoFrame)
Definition: consuming_device_agent.cpp:54
Definition: ptr.h:18
virtual bool pushCustomMetadataPacket(const ICustomMetadataPacket *)
Definition: consuming_device_agent.h:69
ConsumingDeviceAgent(const IDeviceInfo *deviceInfo, bool enableOutput, const std::string &pluginInstanceId="")
Definition: consuming_device_agent.cpp:34
Definition: consuming_device_agent.h:35
Definition: consuming_device_agent.cpp:22
Definition: result.h:82
Definition: i_device_info.h:13
Definition: result.h:48
Definition: i_custom_metadata_packet.h:13
Definition: log_utils.h:25
Definition: i_uncompressed_video_frame.h:70
Definition: i_data_packet.h:15
virtual nx::sdk::Result< const nx::sdk::ISettingsResponse * > settingsReceived()
Definition: consuming_device_agent.h:103
Definition: ref_countable.h:83
void pushMetadataPacket(IMetadataPacket *metadataPacket)
Definition: consuming_device_agent.cpp:205