nx_metadata_sdk  1.0
Metadata SDK
object_track_best_shot_packet.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 <vector>
6 
7 #include <nx/sdk/helpers/attribute.h>
8 #include <nx/sdk/helpers/ref_countable.h>
9 #include <nx/sdk/analytics/i_object_track_best_shot_packet.h>
10 
11 namespace nx {
12 namespace sdk {
13 namespace analytics {
14 
15 class ObjectTrackBestShotPacket: public RefCountable<IObjectTrackBestShotPacket>
16 {
17 public:
18  ObjectTrackBestShotPacket(Uuid trackId = Uuid(), int64_t timestampUs = -1, Rect boundingBox = Rect());
19 
20  virtual Flags flags() const override;
21  virtual int64_t timestampUs() const override;
22 
23  virtual const char* imageUrl() const override;
24  virtual const char* imageData() const override;
25  virtual int imageDataSize() const override;
26  virtual const char* imageDataFormat() const override;
27 
28  void setTrackId(const Uuid& trackId);
29  void setFlags(Flags flags);
30  void setTimestampUs(int64_t timestampUs);
31  void setBoundingBox(const Rect& boundingBox);
32  void setImageUrl(std::string imageUrl);
33  void setImageData(std::vector<char> imageData);
34  void setImageDataFormat(std::string imageDataFormat);
35  void setImage(std::string imageCodec, std::vector<char> imageData);
36 
37 protected:
38  virtual const IAttribute* getAttribute(int index) const override;
39 
40 public:
41  virtual int attributeCount() const override;
42 
43  void addAttribute(Ptr<Attribute> attribute);
44  void addAttributes(const std::vector<Ptr<Attribute>>& value);
45 
46 protected:
47  virtual void getTrackId(Uuid* outValue) const override;
48  virtual void getBoundingBox(Rect* outValue) const override;
49 
50 private:
51  Uuid m_trackId;
52  Flags m_flags = Flags::none;
53  int64_t m_timestampUs = -1;
54  Rect m_boundingBox;
55 
56  std::string m_imageUrl;
57  std::vector<char> m_imageData;
58  std::string m_imageDataFormat;
59 
60  std::vector<Ptr<Attribute>> m_attributes;
61 };
62 
63 } // namespace analytics
64 } // namespace sdk
65 } // namespace nx
Definition: ptr.h:18
Definition: uuid.h:22
Definition: i_attribute.h:10
Definition: object_track_best_shot_packet.h:15
Definition: apple_utils.h:6
Definition: ref_countable.h:84
Definition: rect.h:11