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> 17 #include "objects/random.h" 18 #include "modules/standard_taxonomy/module.h" 21 #include "stub_analytics_plugin_object_detection_ini.h" 24 namespace vms_server_plugins {
27 namespace deprecated_object_detection {
36 virtual void doSetNeededMetadataTypes(
47 virtual bool pullMetadataPackets(
48 std::vector<nx::sdk::analytics::IMetadataPacket*>* metadataPackets)
override;
51 std::vector<nx::sdk::analytics::IMetadataPacket*> cookSomeObjects();
54 int64_t metadataTimestampUs);
56 void addBlinkingObjectIfNeeded(
57 int64_t metadataTimestampUs,
58 std::vector<nx::sdk::analytics::IMetadataPacket*>* metadataPackets,
61 void addFixedObjectIfNeeded(
64 void addCounterIfNeeded(
69 void setObjectCount(
int objectCount);
71 void cleanUpTimestampQueue();
75 template<
typename ObjectType>
76 void setIsObjectTypeGenerationNeeded(
bool isObjectTypeGenerationNeeded)
78 if (isObjectTypeGenerationNeeded)
80 m_objectGenerator.registerObjectFactory<ObjectType>(
81 []() {
return std::make_unique<ObjectType>(); });
85 m_objectGenerator.unregisterObjectFactory<ObjectType>();
89 void updateObjectGenerationParameters();
94 int m_frameCounter = 0;
96 std::deque<int64_t> m_frameTimestampUsQueue;
97 int64_t m_lastVideoFrameTimestampUs = 0;
98 int64_t m_lastBlinkingObjectTimestampUs = 0;
100 struct DeviceAgentSettings
102 bool needToGenerateObjects()
const 106 || generatePedestrians
107 || generateHumanFaces
112 std::atomic<bool> generateCars{
true};
113 std::atomic<bool> generateTrucks{
true};
114 std::atomic<bool> generatePedestrians{
true};
115 std::atomic<bool> generateHumanFaces{
true};
116 std::atomic<bool> generateBicycles{
true};
117 std::atomic<bool> generateStones{
false};
118 std::atomic<bool> generateFixedObject{
false};
120 std::mutex fixedObjectColorMutex;
121 std::string fixedObjectColor;
123 std::atomic<bool> generateCounter{
false};
125 std::atomic<std::chrono::milliseconds> blinkingObjectPeriodMs{
126 std::chrono::milliseconds::zero()};
128 std::atomic<bool> blinkingObjectInDedicatedPacket{
false};
130 std::atomic<int> numberOfObjectsToGenerate{1};
131 std::atomic<int> generateObjectsEveryNFrames{1};
133 std::atomic<bool> generatePreviews{
true};
135 std::atomic<std::chrono::milliseconds> additionalFrameProcessingDelayMs{
136 std::chrono::milliseconds::zero()};
138 std::atomic<std::chrono::milliseconds> overallMetadataDelayMs{
139 std::chrono::milliseconds::zero()};
141 std::atomic<int> numberOfFramesBeforePreviewGeneration{30};
143 std::atomic<float> counterBoundingBoxSideSize{0};
144 std::atomic<float> counterBoundingBoxXOffset{0};
145 std::atomic<float> counterBoundingBoxYOffset{0};
147 std::vector<char> previewImage;
148 std::string previewImageFormat;
149 std::string previewImageUrl;
152 DeviceAgentSettings m_deviceAgentSettings;
156 ObjectContext() =
default;
157 ObjectContext(std::unique_ptr<AbstractObject>
object): object(std::move(
object)) {}
159 ObjectContext& operator=(std::unique_ptr<AbstractObject>&& otherObject)
162 object = std::move(otherObject);
169 isPreviewGenerated =
false;
173 bool operator!()
const {
return !object; }
175 std::unique_ptr<AbstractObject> object;
176 bool isPreviewGenerated =
false;
177 int frameCounter = 0;
180 std::mutex m_objectGenerationMutex;
182 std::vector<ObjectContext> m_objectContexts;
183 int m_counterObjectAttributeValue = 0;
188 const std::string kBlinkingObjectType =
"nx.stub.blinkingObject";
189 const std::string kFixedObjectType =
"nx.stub.fixedObject";
190 const std::string kCounterObjectType =
"nx.stub.counter";
Definition: i_compressed_video_packet.h:34
virtual bool pushCompressedVideoFrame(const nx::sdk::analytics::ICompressedVideoPacket *videoFrame) override
Definition: device_agent.cpp:160
Definition: device_agent.h:29
virtual nx::sdk::Result< const nx::sdk::ISettingsResponse * > settingsReceived() override
Definition: device_agent.cpp:129
Definition: consuming_device_agent.h:38
virtual std::string manifestString() const override
Definition: device_agent.cpp:65
Definition: i_device_info.h:14
Definition: apple_utils.h:6
Definition: i_data_packet.h:17