8 #include <condition_variable> 13 #include <nx/sdk/analytics/helpers/consuming_device_agent.h> 14 #include <nx/sdk/analytics/helpers/pixel_format.h> 15 #include <nx/sdk/analytics/helpers/object_metadata_packet.h> 18 #include "stub_analytics_plugin_special_objects_ini.h" 21 namespace vms_server_plugins {
24 namespace special_objects {
26 const std::string kBlinkingObjectType =
"nx.stub.blinkingObject";
27 const std::string kFixedObjectType =
"nx.stub.fixedObject";
28 const std::string kCounterObjectType =
"nx.stub.counter";
37 virtual void doSetNeededMetadataTypes(
48 virtual bool pullMetadataPackets(
49 std::vector<nx::sdk::analytics::IMetadataPacket*>* metadataPackets)
override;
52 std::vector<nx::sdk::analytics::IMetadataPacket*> cookSomeObjects();
55 int64_t metadataTimestampUs);
57 void addBlinkingObjectIfNeeded(
58 int64_t metadataTimestampUs,
59 std::vector<nx::sdk::analytics::IMetadataPacket*>* metadataPackets,
62 void addFixedObjectIfNeeded(
65 void addCounterIfNeeded(
70 void processCustomMetadataPacket(
74 void cleanUpTimestampQueue();
79 int m_frameCounter = 0;
81 std::deque<int64_t> m_frameTimestampUsQueue;
82 int64_t m_lastVideoFrameTimestampUs = 0;
83 int64_t m_lastBlinkingObjectTimestampUs = 0;
85 struct DeviceAgentSettings
87 bool needToGenerateObjects()
const 89 return generateFixedObject
91 || blinkingObjectPeriodMs.load() != std::chrono::milliseconds::zero();
94 std::atomic<bool> generateFixedObject{
false};
96 std::mutex fixedObjectColorMutex;
97 std::string fixedObjectColor;
99 std::atomic<bool> generateCounter{
false};
101 std::atomic<std::chrono::milliseconds> blinkingObjectPeriodMs{
102 std::chrono::milliseconds::zero()};
104 std::atomic<bool> blinkingObjectInDedicatedPacket{
false};
106 std::atomic<int> generateObjectsEveryNFrames{1};
108 std::atomic<std::chrono::milliseconds> additionalFrameProcessingDelayMs{
109 std::chrono::milliseconds::zero()};
111 std::atomic<std::chrono::milliseconds> overallMetadataDelayMs{
112 std::chrono::milliseconds::zero()};
114 std::atomic<float> counterBoundingBoxSideSize{0};
115 std::atomic<float> counterBoundingBoxXOffset{0};
116 std::atomic<float> counterBoundingBoxYOffset{0};
119 DeviceAgentSettings m_deviceAgentSettings;
121 std::mutex m_objectGenerationMutex;
122 int m_counterObjectAttributeValue = 0;
virtual std::string manifestString() const override
Definition: device_agent.cpp:58
Definition: i_compressed_video_packet.h:34
Definition: consuming_device_agent.h:38
Definition: device_agent.h:30
virtual bool pushCompressedVideoFrame(const nx::sdk::analytics::ICompressedVideoPacket *videoFrame) override
Definition: device_agent.cpp:188
Definition: i_device_info.h:14
Definition: apple_utils.h:6
virtual nx::sdk::Result< const nx::sdk::ISettingsResponse * > settingsReceived() override
Definition: device_agent.cpp:91
Definition: i_data_packet.h:17