docs.rs failed to build lamco-video-0.1.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
lamco-video
Video frame processing and RDP bitmap conversion for Wayland screen capture.
Features
- Frame Processing Pipeline: Configurable video frame processing with rate limiting
- RDP Bitmap Conversion: Convert PipeWire frames to RDP-ready bitmap format
- Damage Region Tracking: Optimize updates by only sending changed regions
- Buffer Pooling: Efficient memory management with reusable buffers
- Priority-Based Dispatch: Multi-stream coordination with backpressure handling
- SIMD Optimization: Automatic use of SIMD instructions where available
Quick Start
use ;
use VideoFrame;
use mpsc;
// Create frame processor
let config = default;
let processor = new;
// Create channels
let = channel;
let = channel;
// Start processor
let processor_clone = processor.clone;
spawn;
// Send frames from lamco-pipewire, receive bitmap updates
while let Some = output_rx.recv.await
Configuration
Processor Configuration
use ProcessorConfig;
let config = ProcessorConfig ;
Dispatcher Configuration
use DispatcherConfig;
let config = DispatcherConfig ;
Architecture
The processing pipeline:
┌────────────────────┐
│ lamco-pipewire │
│ (VideoFrame) │
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ FrameDispatcher │ ◄── Multi-stream routing
│ (priority queue) │ Backpressure handling
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ FrameProcessor │ ◄── Frame rate limiting
│ (rate control) │ Age-based dropping
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ BitmapConverter │ ◄── Pixel format conversion
│ (format conv) │ Damage region tracking
└─────────┬──────────┘ Buffer pooling
│
▼
┌────────────────────┐
│ BitmapUpdate │ ◄── RDP-ready rectangles
│ (RDP output) │
└────────────────────┘
RDP Pixel Formats
The converter supports these RDP-compatible output formats:
| Format | BPP | Description |
|---|---|---|
| BgrX32 | 4 | 32-bit BGRX (most common) |
| Bgr24 | 3 | 24-bit BGR |
| Rgb16 | 2 | 16-bit RGB 5:6:5 |
| Rgb15 | 2 | 15-bit RGB 5:5:5 |
Feature Flags
| Feature | Default | Description |
|---|---|---|
damage |
No | Full damage region tracking |
full |
No | All features enabled |
[]
= { = "0.1", = ["full"] }
Performance
Typical performance on modern hardware:
- Conversion latency: < 1ms per frame (1080p)
- Memory usage: < 50MB (with buffer pooling)
- Throughput: > 200 MB/s (with SIMD)
- Frame rates: Tested up to 144Hz
Requirements
- Linux with a Wayland compositor
- Rust 1.77+
Related Crates
lamco-portal- XDG Desktop Portal integrationlamco-pipewire- PipeWire screen capture
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.