eSDK Pro System Architecture
eSDK Pro acts as the control layer between your application and Emergent Vision camera systems. An application typically starts by connecting to the System, which manages one or more Servers. Each server hosts cameras, and camera streams flow through a Pipeline made of Tasks. Each task is executed by a TaskWorker, which can be built-in or custom (via plugins).
Application
└─ System
├─ Server (local)
│ └─ Camera(s)
├─ Server (remote)
│ └─ Camera(s)
└─ Pipeline
└─ [CameraTask] → [Processing Task(s)] → [Output/Custom Task(s)]
│
└─ Each Task → TaskWorker (implementation)
Core Components
- System: Global entry point, manages servers and pipeline.
- Server: Represents one machine (local or remote), manages its cameras.
- Camera: Represents a single camera; accessed through tasks in the pipeline.
- Pipeline: Graph of tasks that define data flow; start with Start(), stop with Stop(). Cannot be modified while running.
- Task: Unit of work in the pipeline, runs in its own thread, configured via parameters.
- TaskWorker: Backend implementation for a task; extendable with custom plugins.
Local vs. Remote Servers
- Local Server: Runs in-process; supports in-process plugins; lowest latency. Recommended for prototypes and single-machine deployments.
- Remote Server: Runs on another machine; plugins must be compiled as dynamic libraries; allows scaling across multiple servers with possible network latency. Installed automatically with eCapture Pro or eSDK Pro (background eCaptureProServer).
Plugin Model
- Subclass TaskWorker and implement Process(Frame&).
- Register with RegisterTaskPlugin().
- Create with Pipeline::CreateTask("PluginName").
- Configure with Task::Configure().
- Connect with Task::Connect().
See Also