Middleware Nodes
Điều khiển luồng dữ liệu giữa các node.
| Node | Mô tả |
|---|---|
cvedix_split_node | Fan-out: 1 input → N outputs (hỗ trợ deep copy) |
cvedix_sync_node | Merge/đồng bộ nhiều nhánh theo frame_index |
cvedix_skip_node | Bỏ qua N frame — giảm tải node phía sau |
cvedix_placeholder_node | Node rỗng — giữ chỗ trong topology |
cvedix_custom_data_transform_node | Hook biến đổi dữ liệu tùy biến |
cvedix_message_broker_node | Điều phối message nội bộ |
Split — chia nhánh
cpp
#include <cvedix/nodes/mid/cvedix_split_node.h>
auto split = std::make_shared<cvedix_nodes::cvedix_split_node>(
"split_0",
true); // deep copy: mỗi nhánh nhận bản sao độc lập
split->attach_to({detector});
branch_a->attach_to({split});
branch_b->attach_to({split});Deep copy hay không?
true— nhánh nào sửa frame (OSD vẽ đè) không ảnh hưởng nhánh khác. Tốn RAM hơn.false— chia sẻ cùng frame, chỉ an toàn khi các nhánh chỉ đọc.
Sync — gộp nhánh
Dùng sau khi split ra nhiều detector chạy song song:
cpp
#include <cvedix/nodes/mid/cvedix_sync_node.h>
auto sync = std::make_shared<cvedix_nodes::cvedix_sync_node>("sync_0");
sync->attach_to({face_branch, vehicle_branch});
osd->attach_to({sync});Sync gộp targets từ các nhánh có cùng frame_index vào một frame_meta duy nhất.
Skip — giảm tần suất
cpp
auto skip = std::make_shared<cvedix_nodes::cvedix_skip_node>(
"skip_0",
2); // chỉ cho qua 1 trong mỗi 3 frame
skip->attach_to({src});
heavy_node->attach_to({skip});