stub_analytics_plugin  1.6
Network Optix Video Analytics SDK
common_metadata_packet.h
1 #pragma once
2 
3 #include <vector>
4 
5 #include <plugins/plugin_tools.h>
6 #include <nx/sdk/analytics/objects_metadata_packet.h>
7 #include <nx/sdk/analytics/events_metadata_packet.h>
8 
9 namespace nx {
10 namespace sdk {
11 namespace analytics {
12 
13 template <class SomeIterableMetadataPacket, class Item>
14 class CommonMetadataPacketBase: public nxpt::CommonRefCounter<SomeIterableMetadataPacket>
15 {
16 public:
17  virtual ~CommonMetadataPacketBase() {}
18 
19  virtual int64_t timestampUsec() const override { return m_timestampUsec; }
20 
21  virtual int64_t durationUsec() const override { return m_durationUsec; }
22 
23  virtual Item* nextItem() override
24  {
25  return (m_index < (int) m_items.size()) ? m_items[m_index++] : nullptr;
26  }
27 
28  void setTimestampUsec(int64_t timestampUsec) { m_timestampUsec = timestampUsec; }
29 
30  void setDurationUsec(int64_t durationUsec) { m_durationUsec = durationUsec; }
31 
32  void addItem(Item* item) { m_items.push_back(item); }
33 
34  void resetItems() { m_index = 0; m_items.clear(); }
35 
36 private:
37  int64_t m_timestampUsec = -1;
38  int64_t m_durationUsec = -1;
39 
40  std::vector<Item*> m_items;
41  int m_index = 0;
42 };
43 
45  public CommonMetadataPacketBase<EventsMetadataPacket, Event>
46 {
47 public:
48  virtual void* queryInterface(const nxpl::NX_GUID& interfaceId) override;
49 };
50 
52  public CommonMetadataPacketBase<ObjectsMetadataPacket, Object>
53 {
54 public:
55  virtual void* queryInterface(const nxpl::NX_GUID& interfaceId) override;
56 };
57 
58 } // namespace analytics
59 } // namespace sdk
60 } // namespace nx
Definition: common_metadata_packet.h:51
GUID of plugin interface.
Definition: plugin_api.h:21
Definition: common_metadata_packet.h:44
Definition: plugin_tools.h:221
Definition: debug.cpp:14
Definition: common_metadata_packet.h:14