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 <string>
6 #include <map>
7 #include <vector>
8 #include <mutex>
9 
10 #include <nx/sdk/helpers/ref_countable.h>
11 #include <nx/sdk/helpers/log_utils.h>
12 #include <nx/sdk/ptr.h>
13 
14 #include <nx/sdk/analytics/i_engine.h>
15 #include <nx/sdk/analytics/i_consuming_device_agent.h>
16 #include <nx/sdk/analytics/i_compound_metadata_packet.h>
17 #include <nx/sdk/analytics/i_metadata_types.h>
18 #include <nx/sdk/analytics/i_compressed_video_packet.h>
19 #include <nx/sdk/analytics/i_uncompressed_video_frame.h>
20 #include <nx/sdk/analytics/i_custom_metadata_packet.h>
21 
22 namespace nx {
23 namespace sdk {
24 namespace analytics {
25 
38 class ConsumingDeviceAgent: public RefCountable<IConsumingDeviceAgent>
39 {
40 protected:
41  const LogUtils logUtils;
42 
43 protected:
47  ConsumingDeviceAgent(const IDeviceInfo* deviceInfo, bool enableOutput);
48 
49  virtual std::string manifestString() const = 0;
50 
56  virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket* videoFrame);
57 
62  virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame* videoFrame);
63 
68  virtual bool pushCustomMetadataPacket(const ICustomMetadataPacket* /*customMetadataPacket*/)
69  {
70  return true;
71  }
72 
79  virtual bool pullMetadataPackets(std::vector<IMetadataPacket*>* metadataPackets);
80 
85  void pushMetadataPacket(IMetadataPacket* metadataPacket);
86 
93  IPluginDiagnosticEvent::Level level,
94  std::string caption,
95  std::string description);
96 
103  {
104  return nullptr;
105  }
106 
116  std::string settingValue(const std::string& paramName);
117 
118  void pushManifest(const std::string& pushManifest);
119 
120  virtual void finalize() override;
121 
122 public:
123  virtual ~ConsumingDeviceAgent() override;
124 
125 //-------------------------------------------------------------------------------------------------
126 // Not intended to be used by the descendant.
127 
128 public:
129  virtual void setHandler(IHandler* handler) override;
130 
131 protected:
132  virtual void doPushDataPacket(Result<void>* outResult, IDataPacket* dataPacket) override;
133  virtual void doSetSettings(
134  Result<const ISettingsResponse*>* outResult, const IStringMap* settings) override;
135  virtual void getPluginSideSettings(Result<const ISettingsResponse*>* outResult) const override;
136  virtual void getManifest(Result<const IString*>* outResult) const override;
137 
138 private:
139  void logMetadataPacketIfNeeded(
140  const IMetadataPacket* metadataPacket,
141  const std::string& packetIndexName) const;
142  void processMetadataPackets(const std::vector<IMetadataPacket*>& metadataPackets);
143  void processMetadataPacket(IMetadataPacket* metadataPacket, int packetIndex /*= -1*/);
144 
145 private:
146  mutable std::mutex m_mutex;
147  Ptr<IDeviceAgent::IHandler> m_handler;
148  std::map<std::string, std::string> m_settings;
149 };
150 
151 } // namespace analytics
152 } // namespace sdk
153 } // namespace nx
Definition: i_string_map.h:10
Definition: i_metadata_packet.h:16
virtual bool pullMetadataPackets(std::vector< IMetadataPacket *> *metadataPackets)
Definition: consuming_device_agent.cpp:57
Definition: i_compressed_video_packet.h:34
std::string settingValue(const std::string &paramName)
Definition: consuming_device_agent.cpp:224
virtual bool pushCompressedVideoFrame(const ICompressedVideoPacket *videoFrame)
Definition: consuming_device_agent.cpp:45
virtual bool pushUncompressedVideoFrame(const IUncompressedVideoFrame *videoFrame)
Definition: consuming_device_agent.cpp:51
void pushPluginDiagnosticEvent(IPluginDiagnosticEvent::Level level, std::string caption, std::string description)
Definition: consuming_device_agent.cpp:202
Definition: ptr.h:18
virtual bool pushCustomMetadataPacket(const ICustomMetadataPacket *)
Definition: consuming_device_agent.h:68
Definition: consuming_device_agent.h:38
Definition: result.h:81
ConsumingDeviceAgent(const IDeviceInfo *deviceInfo, bool enableOutput)
Definition: consuming_device_agent.cpp:31
Definition: i_device_info.h:14
Definition: result.h:47
Definition: apple_utils.h:6
Definition: i_custom_metadata_packet.h:16
Definition: log_utils.h:26
Definition: i_uncompressed_video_frame.h:73
Definition: i_data_packet.h:17
virtual nx::sdk::Result< const nx::sdk::ISettingsResponse * > settingsReceived()
Definition: consuming_device_agent.h:102
Definition: ref_countable.h:84
void pushMetadataPacket(IMetadataPacket *metadataPacket)
Definition: consuming_device_agent.cpp:194