Language Bindings — Tổng quan
Ngoài C++, SDK hỗ trợ C, Java, C# qua lớp C API ổn định.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Java (JNA) │ │ C# P/Invoke │ │ C │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
└────────────────┼────────────────┘
┌───────▼────────┐
│ libcvedix_capi │ C ABI — không đổi khi core refactor
└───────┬────────┘
┌───────▼────────┐
│ libcvedix_core │ C++ runtime (80+ nodes)
└────────────────┘| Binding | Thư mục trong SDK | Công nghệ | Yêu cầu |
|---|---|---|---|
| C | bindings/c/ | Header C99 thuần | GCC/Clang |
| Java | bindings/java/ | JNA 5.x | JDK 11+, Maven |
| C# | bindings/csharp/ | P/Invoke | .NET 8 |
Phạm vi C API v1
Node hỗ trợ qua C API:
| Nhóm | Node |
|---|---|
| Source | file_src, rtsp_src |
| Inference | yolo_detector (ONNX / TensorRT / RKNN — auto theo đuôi file model) |
| Tracking | sort_tracker, bytetrack_tracker |
| OSD | osd |
| Destination | rtsp_des, file_des, web_des, app_des (callback kết quả) |
Cần node khác → team CVEDIX mở rộng capi/ trong core; bindings chỉ cần khai báo hàm mới.
Cam kết ABI
- Chỉ thêm hàm mới — không sửa/xóa hàm hiện có.
- Ứng dụng build với v1.0 chạy được với mọi
libcvedix_capi.somới hơn.
Runtime chung
Mọi binding cần thư viện native trong LD_LIBRARY_PATH:
bash
export LD_LIBRARY_PATH=$CVEDIX_SDK_DIR/lib/x86_64:$LD_LIBRARY_PATH