openevt is an independently maintained Rust crate for OpenEB-inspired event
camera data and device abstractions. It is related to Prophesee's OpenEB only
in spirit and is not endorsed, sponsored, or maintained by Prophesee.
The HAL and shared buffer utilities are always available. File-backed raw device support and the frame-generation plugin ABI are optional:
[dependencies]
openevt = { version = "1.0.4", features = ["devices"] }The all feature enables every optional component and is the default feature.
Use default-features = false for a core-only build.
The complete developer documentation is available as a GitBook-style guide in
docs/README.md, with navigation in
docs/SUMMARY.md. It covers architecture, ABI rules,
plugin lifecycle, configuration schemas, testing, and troubleshooting.
OpenEVT supports two plugin families:
- Device plugins connect cameras, files, network sources, and simulators to the host layer.
- Frame-generation plugins consume decoded CD events and render RGBA frames.
The repository includes a raw-file plugin reference and a video simulator plugin. See the development workflow for build, discovery, testing, and troubleshooting commands.
.
├── Cargo.toml
├── docs/ # Plugin development and architecture guides
└── src/
├── hal/ # HAL abstractions, facilities, dispatchers, and decoders
├── buffer.rs # pooled event buffers
├── framegen.rs # feature-gated frame-generation plugin ABI
└── devices/ # feature-gated raw-file support
Enable the frame-generation API with features = ["framegen"]. It is also
included by the default all feature.
The primary modules are:
halcontains event types, decoder and device traits, facilities, and dispatchers.bufferprovidesPooledBuffer<T>for reusable decoded-event batches.devicescontains raw-file header parsing, indexing, stream/decoder wiring, and reader/iterator APIs. Its main types are also re-exported at the crate root when thedevicesfeature is enabled.
For a developer-focused walkthrough of dynamic device plugins, see the
plugin development guide. Raw-file access
is available through the raw-file plugin or directly
through the public RawFileReader convenience API; the native handler and
stream implementation remain private details.
The video simulator is documented in the simulator plugin guide.
Set OPENEVT_PLUGIN_PATH to the directory containing the plugin before using a
host layer or the Python bindings. Raw-file discovery uses OPENEVT_RAW_FILES.
EVT3 decoding is currently supported; EVT2, DAT, and HDF5 decoder paths are not yet implemented.
The property! and pack_facility! macros, along with the new derive
re-export, now live directly in the crate. The previous standalone macro and
procedural-macro packages are no longer needed.
- The host layer loads the raw-file plugin through
PluginRegistry. - The plugin opens the discovered raw-file serial.
- Its private stream and decoder read and decode EVT3 data.
- Decoded events cross the ABI through
EventBatchSinkcallbacks. - Applications use the host layer API to subscribe to batches; optional indexing
supports
seek.
cargo check # default/all features
cargo check --no-default-features # core only
cargo test --all-features
cargo build --features python # Python/NumPy bindings; loads raw support as a pluginTo build Python wheels locally, install Maturin and run:
python -m pip install maturin
maturin build --releaseThe resulting wheels are written to target/wheels/. Test them in a clean
environment before uploading with maturin publish or a PyPI publishing
tool. The published distribution and importable module are named openevt:
python -m pip install openevtThis project is a separate rewrite inspired by the architecture and event
camera abstractions in Prophesee's OpenEB.
We gratefully credit the Prophesee team for that foundational work. openevt
is independently maintained and is not affiliated with, endorsed by, or
sponsored by Prophesee.
The implementation is incomplete: EVT3 is the currently supported raw decoder, while EVT2, DAT, and HDF5 paths remain unfinished, and several facilities are still scaffolding.