Server
 
로딩중...
검색중...
일치하는것 없음
metadata_parser.hpp
이 파일의 Documentation 페이지로 가기
1
7#ifndef METADATA_PARSER_HPP
8#define METADATA_PARSER_HPP
9
10#include <vector>
11#include <string>
12#include <mutex>
13#include <cstring>
14#include <atomic>
15
16#include <chrono>
17#include <queue>
18#include "json.hpp"
19
20// Forward declaration for SSL
21typedef struct ssl_st SSL;
22
23
27struct ServerBBox {
29 std::string type;
30 float confidence;
31 int left;
32 int top;
33 int right;
34 int bottom;
35};
36
37
43inline std::vector<ServerBBox> parseServerBBoxes(const nlohmann::json& bboxArray) {
44 std::vector<ServerBBox> boxes;
45 for (const auto& value : bboxArray) {
46 ServerBBox bbox;
47 bbox.object_id = value.at("object_id").get<int>();
48 bbox.type = value.at("type").get<std::string>();
49 bbox.confidence = value.at("confidence").get<float>();
50 bbox.left = value.at("left").get<int>();
51 bbox.top = value.at("top").get<int>();
52 bbox.right = value.at("right").get<int>();
53 bbox.bottom = value.at("bottom").get<int>();
54 boxes.push_back(bbox);
55 }
56 return boxes;
57}
58
59
60
66 std::chrono::steady_clock::time_point timestamp;
67 std::vector<ServerBBox> bboxes;
68};
69
70
72extern std::atomic<int> bbox_buffer_delay_ms;
74extern std::atomic<int> bbox_send_interval_ms;
76extern std::queue<TimestampedBBox> bbox_buffer;
78extern std::mutex bbox_buffer_mutex;
79
81extern std::vector<ServerBBox> latest_bboxes;
83extern std::mutex bbox_mutex;
84
85
90
91
96
97
102void parse_metadata();
103
104
109void update_bbox_buffer(const std::vector<ServerBBox>& new_bboxes);
110
114void clear_bbox_buffer();
115
121bool send_bboxes_to_client(SSL* ssl);
122
123
124#endif // METADATA_PARSER_HPP
JSON 처리 유틸리티 헤더 파일
std::atomic< int > bbox_send_interval_ms
BBox 전송 주기 (ms)
bool send_bboxes_to_client(SSL *ssl)
버퍼에서 BBox 데이터를 꺼내 클라이언트(SSL)로 전송합니다.
Definition metadata_parser.cpp:257
std::atomic< int > bbox_buffer_delay_ms
BBox 버퍼 지연 시간 (ms)
std::queue< TimestampedBBox > bbox_buffer
BBox 버퍼 (타임스탬프 포함)
Definition metadata_parser.cpp:58
void update_bbox_buffer(const std::vector< ServerBBox > &new_bboxes)
새로운 BBox 데이터를 타임스탬프와 함께 버퍼에 추가하고 오래된 데이터를 정리합니다.
Definition metadata_parser.cpp:211
std::mutex bbox_buffer_mutex
bbox_buffer 보호용 뮤텍스
Definition metadata_parser.cpp:64
void start_metadata_parser()
메타데이터 파서를 시작합니다.
Definition metadata_parser.cpp:70
std::mutex bbox_mutex
latest_bboxes 보호용 뮤텍스
Definition metadata_parser.cpp:33
std::vector< ServerBBox > parseServerBBoxes(const nlohmann::json &bboxArray)
JSON 배열에서 ServerBBox 벡터로 변환합니다.
Definition metadata_parser.hpp:43
void parse_metadata()
RTSP 스트림에서 메타데이터를 파싱하여 BBox 정보를 추출합니다. 파싱된 BBox는 latest_bboxes와 버퍼에 저장됩니다.
Definition metadata_parser.cpp:86
void stop_metadata_parser()
메타데이터 파서를 중지합니다.
Definition metadata_parser.cpp:78
void clear_bbox_buffer()
BBox 버퍼를 완전히 비웁니다.
Definition metadata_parser.cpp:197
std::vector< ServerBBox > latest_bboxes
최근에 파싱된 BBox 목록
Definition metadata_parser.cpp:27
서버에서 사용하는 BBox(경계 상자) 정보 구조체
Definition metadata_parser.hpp:27
int top
상단 좌표
Definition metadata_parser.hpp:32
int object_id
객체 ID
Definition metadata_parser.hpp:28
std::string type
객체 타입
Definition metadata_parser.hpp:29
float confidence
신뢰도
Definition metadata_parser.hpp:30
int right
우측 좌표
Definition metadata_parser.hpp:33
int bottom
하단 좌표
Definition metadata_parser.hpp:34
int left
좌측 좌표
Definition metadata_parser.hpp:31
BBox와 타임스탬프를 함께 저장하는 구조체 (버퍼용)
Definition metadata_parser.hpp:65
std::vector< ServerBBox > bboxes
BBox 목록
Definition metadata_parser.hpp:67
std::chrono::steady_clock::time_point timestamp
데이터 수신 시각
Definition metadata_parser.hpp:66