Skip to content

Middleware Nodes

Điều khiển luồng dữ liệu giữa các node.

NodeMô tả
cvedix_split_nodeFan-out: 1 input → N outputs (hỗ trợ deep copy)
cvedix_sync_nodeMerge/đồng bộ nhiều nhánh theo frame_index
cvedix_skip_nodeBỏ qua N frame — giảm tải node phía sau
cvedix_placeholder_nodeNode rỗng — giữ chỗ trong topology
cvedix_custom_data_transform_nodeHook 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});

Phần mềm độc quyền — CVEDIX