https://github.com/roboplc/rvideo
Real-time video server for embedded apps
https://github.com/roboplc/rvideo
Last synced: about 1 year ago
JSON representation
Real-time video server for embedded apps
- Host: GitHub
- URL: https://github.com/roboplc/rvideo
- Owner: roboplc
- License: apache-2.0
- Created: 2024-06-07T21:07:30.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-02T18:43:51.000Z (over 1 year ago)
- Last Synced: 2025-05-04T14:09:51.101Z (about 1 year ago)
- Language: Rust
- Homepage: https://www.bohemia-automation.com/software/libraries/
- Size: 93.8 KB
- Stars: 9
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
RVideo
Real-time video server for embedded apps.
## What is RVideo
RVideo is a library which solves the problem of streaming video from embedded
computer-vision applications. Many of such are headless and do not require a
dedicated interface, however it is often useful (especially for developers) to
see what is happening on the device. RVideo provides a simple API to stream
video from your embedded application to a remote client.
## How does it work
Unlike other streaming solutions, the goal of RVideo is to provide a minimal
overhead for an embedded application it is included into:
* Frames are always sent as-is, usually in RAW formats (it is more than enough
for most debugging use-cases)
* All frames, not received by a client in time, are dropped
* No any buffering is performed on the server side
* Real-time-safe code is used to minimize the impact on the main application
## Clients
RVideo streams can be received with clients provided by crate. For ready-to-use
UI, see the [`rvideo-view`](https://crates.io/crates/rvideo-view) crate.
## Locking safety
By default, the server uses [parking_lot](https://crates.io/crates/parking_lot)
for locking. For real-time applications, the following features are available:
* `locking-rt` - use [parking_lot_rt](https://crates.io/crates/parking_lot_rt)
crate which is a spin-free fork of parking_lot.
* `locking-rt-safe` - use [rtsc](https://crates.io/crates/rtsc)
priority-inheritance locking, which is not affected by priority inversion
(Linux only).
Note: to switch locking policy, disable the crate default features.
## About
RVideo is a part of [RoboPLC](https://www.roboplc.com/) project.