Repository navigation
Releases: EdgeFirstAI/replay
Releases · EdgeFirstAI/replay
Release list
EdgeFirst Replay v3.0.0
EdgeFirst Replay v3.0.0
Installation
Download Binaries
| Platform | Binary |
|---|---|
| Linux x86_64 | edgefirst-replay-3.0.0-linux-x86_64 |
| Linux ARM64 | edgefirst-replay-3.0.0-linux-aarch64 |
| Configuration | replay.default |
# Download and install (ARM64 example)
wget https://github.com/EdgeFirstAI/replay/releases/download/v3.0.0/edgefirst-replay-3.0.0-linux-aarch64
chmod +x edgefirst-replay-3.0.0-linux-aarch64
sudo mv edgefirst-replay-3.0.0-linux-aarch64 /usr/local/bin/edgefirst-replay
# Install default configuration (optional)
sudo cp replay.default /etc/default/replayWhat's Changed
Changed
- Breaking: Bumped
edgefirst-schemas3.4.0 → 4.0. Synthesized camera
frames are nowedgefirst_msgs/msg/CameraFrameonrt/camera/frame
(default--dma-topic), matching the live camera 4.x wire contract.
RecordedDmaBufferandCameraFramemessages are still skipped because
their fds are process-local. Consumers ofrt/camera/dma/DmaBuffer
must subscribe toCameraFrameinstead;--camera-image-topicis
unchanged. - Aligned Tracy with other EdgeFirst services:
tracing-tracy0.12.0,
tracy-client0.19.0,tracy-client-sys0.30.0. - Upgraded
videostream2.5.2 → 2.5.3.
Full Documentation: https://github.com/EdgeFirstAI/replay#readme
EdgeFirst Replay v2.3.1
EdgeFirst Replay v2.3.1
Installation
Download Binaries
| Platform | Binary |
|---|---|
| Linux x86_64 | edgefirst-replay-2.3.1-linux-x86_64 |
| Linux ARM64 | edgefirst-replay-2.3.1-linux-aarch64 |
| Configuration | replay.default |
# Download and install (ARM64 example)
wget https://github.com/EdgeFirstAI/replay/releases/download/v2.3.1/edgefirst-replay-2.3.1-linux-aarch64
chmod +x edgefirst-replay-2.3.1-linux-aarch64
sudo mv edgefirst-replay-2.3.1-linux-aarch64 /usr/local/bin/edgefirst-replay
# Install default configuration (optional)
sudo cp replay.default /etc/default/replayWhat's Changed
No changelog entry for this version.
Full Documentation: https://github.com/EdgeFirstAI/replay#readme
EdgeFirst Replay v2.3.0
EdgeFirst Replay v2.3.0
Installation
Download Binaries
| Platform | Binary |
|---|---|
| Linux x86_64 | edgefirst-replay-2.3.0-linux-x86_64 |
| Linux ARM64 | edgefirst-replay-2.3.0-linux-aarch64 |
| Configuration | replay.default |
# Download and install (ARM64 example)
wget https://github.com/EdgeFirstAI/replay/releases/download/v2.3.0/edgefirst-replay-2.3.0-linux-aarch64
chmod +x edgefirst-replay-2.3.0-linux-aarch64
sudo mv edgefirst-replay-2.3.0-linux-aarch64 /usr/local/bin/edgefirst-replay
# Install default configuration (optional)
sudo cp replay.default /etc/default/replayWhat's Changed
Changed
- Breaking:
rt/camera/dmanow publishes the decoder-native NV12 buffer,
matching the live camera wire contract. Replay no longer performs NV12→RGBA
conversion before publishing this topic. Downstream consumers that were
reading RGBA fromrt/camera/dmashould switch to--camera-image-topic
(sensor_msgs/Image, rgba8). - Bumped
edgefirst-schemas1.3.1 → 3.4.0 and adopted its zero-copy
view/builder API (FoxgloveCompressedVideo::from_cdr,
CompressedImage::from_cdr,Image::builder().encode_into_vec(..),
DmaBuffer::new(..).into_cdr()). - Upgraded
videostreamto 2.5.2. Switched the h264 decoder construction
from the legacyDecoder::create(H264, fps)to
Decoder::create_ex(H264, fps, CodecBackend::Auto); the legacy entrypoint
bypasses the v4l2 device enumeration the 2.5.x backend relies on, while
the_exentry uses it. On imx8mp this routes to/dev/video1 vsi_v4l2dec
with a tighter natural NV12 stride (1920 bytes vs the Hantro path's 2880). decode_h264_msgretries on transient decoder backpressure (V4L2 m2m OUTPUT
queue full): up to 20 attempts, 5 ms sleep between, retrying the same data.
Mirrors~/Software/EdgeFirst/camera/src/replay.rs. Without this, the very
first decode_frame call on a cold pool returnsIo("Decoder Error")from
the C library and is otherwise treated as fatal.mainis now sync (no#[tokio::main], notokio::time::sleep, no
tokio::process::Command). The edgefirst-hal 0.23.1 GL backend calls
tokio::sync::oneshot::Receiver::blocking_recvduring converter init,
which panics inside a tokio runtime; makingmainsync sidesteps the
collision. Service-handler invocations usestd::process::Commandand
the inter-frame timing loop usesstd::thread::sleep.
Removed
- NXP G2D (
g2d-sys),turbojpeg,dma-heap,tokio, and the per-frame
cdrcrate dependency. All image conversion, JPEG decoding, and CMA
allocation now go throughedgefirst-hal0.23.1. src/image.rs(G2D surface helpers, CMA-heapImage,MappedImage).
Added
--camera-image-topic(envCAMERA_IMAGE_TOPIC) and--camera-image-buffers
(envCAMERA_IMAGE_BUFFERS, default 4) — opt-insensor_msgs/ImageRGBA
publisher for consumers that need a non-dma-buf-aware decoded image stream.
Backed byedgefirst-halImageProcessor(auto-selects G2D / OpenGL / CPU).
Source tensors cached by dma-buf inode; destination tensors pre-allocated
once and reused.- JPEG MCAP playback now uses the optimized
edgefirst-codecJPEG decoder
(peek_info+ImageLoad::load_image), writing directly into pre-allocated
NV12 dma-buf tensors — no host-side intermediate, no memcpy.
Full Documentation: https://github.com/EdgeFirstAI/replay#readme
EdgeFirst Replay v2.2.0
EdgeFirst Replay v2.2.0
Installation
Download Binaries
| Platform | Binary |
|---|---|
| Linux x86_64 | edgefirst-replay-2.2.0-linux-x86_64 |
| Linux ARM64 | edgefirst-replay-2.2.0-linux-aarch64 |
| Configuration | replay.default |
# Download and install (ARM64 example)
wget https://github.com/EdgeFirstAI/replay/releases/download/v2.2.0/edgefirst-replay-2.2.0-linux-aarch64
chmod +x edgefirst-replay-2.2.0-linux-aarch64
sudo mv edgefirst-replay-2.2.0-linux-aarch64 /usr/local/bin/edgefirst-replay
# Install default configuration (optional)
sudo cp replay.default /etc/default/replayWhat's Changed
Changed
- Renamed environment variables to short explicit names (MCAP, REPLAY_SPEED, TOPICS, etc.)
- Upload release binaries directly instead of zipping
Added
- Complete
replay.defaultconfiguration file for systemd EnvironmentFile usage replay.defaultpublished as a release artifact with install instructions
Full Documentation: https://github.com/EdgeFirstAI/replay#readme
EdgeFirst Replay v2.1.0
EdgeFirst Replay v2.1.0
What's Changed
Changed
- Migrated from vendored g2d-sys 2.0.0 to upstream g2d-sys 1.2.0
- Release workflow uses wait-on-check pattern for cross-workflow artifact downloads
- Simplified rustfmt.toml to stable-only options (removed nightly requirements)
- Replaced per-frame mmap/munmap with persistent MappedImage mappings
- Used tokio::process::Command instead of std::process::Command in async context
Added
- AI assistant development guidelines (.github/copilot-instructions.md)
- CI and EdgeFirst badges to README
- Cache coherency documentation in ARCHITECTURE.md
- Verify Builds sentinel job in build.yml for release coordination
Removed
- Vendored g2d-sys sub-crate (replaced by upstream crate)
- Dead code:
Image::fd()andMappedImage::as_slice()methods - dma-buf dependency (no longer needed with upstream g2d-sys)
Fixed
- CDR serialize error handling (replaced unwrap with match)
- munmap error check (changed
> 0to!= 0) - Tracy client handle lifetime (stored in variable to prevent premature drop)
- SBOM artifact naming in release workflow (handles *.cdx.json from cargo-cyclonedx)
Assets
- Linux x86_64:
edgefirst-replay-2.1.0-linux-x86_64 - Linux ARM64:
edgefirst-replay-2.1.0-linux-aarch64 - SBOM:
edgefirst-replay-2.1.0-sbom.json(CycloneDX format)