62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include <memory>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "frame/frame.h"
|
|
#include "utils/simple_json.h"
|
|
|
|
namespace rk3588 {
|
|
|
|
enum class FaceAlarmStatus {
|
|
Uncertain,
|
|
Known,
|
|
Unknown,
|
|
};
|
|
|
|
inline const char* FaceAlarmStatusName(FaceAlarmStatus status) {
|
|
switch (status) {
|
|
case FaceAlarmStatus::Known:
|
|
return "known";
|
|
case FaceAlarmStatus::Unknown:
|
|
return "unknown";
|
|
case FaceAlarmStatus::Uncertain:
|
|
default:
|
|
return "uncertain";
|
|
}
|
|
}
|
|
|
|
struct FaceAlarmMatch {
|
|
FaceAlarmStatus status = FaceAlarmStatus::Uncertain;
|
|
int candidate_person_id = -1;
|
|
std::string candidate_name;
|
|
float best_sim = 0.0f;
|
|
float second_sim = 0.0f;
|
|
};
|
|
|
|
struct AlarmEvent {
|
|
std::string event_id;
|
|
std::string rule_name;
|
|
std::string node_id;
|
|
uint64_t timestamp_ms;
|
|
uint64_t frame_id;
|
|
std::vector<Detection> detections;
|
|
std::vector<FaceAlarmMatch> face_matches;
|
|
std::vector<BehaviorEventItem> behavior_events;
|
|
std::string snapshot_url;
|
|
std::string clip_url;
|
|
};
|
|
|
|
class IAlarmAction {
|
|
public:
|
|
virtual ~IAlarmAction() = default;
|
|
virtual bool Init(const SimpleJson& config) = 0;
|
|
virtual void Execute(AlarmEvent& event, std::shared_ptr<Frame> frame) = 0;
|
|
virtual void Drain() {}
|
|
virtual void Stop() {}
|
|
virtual std::string Name() const = 0;
|
|
};
|
|
|
|
} // namespace rk3588
|