Skip to content

Releases: EdgeFirstAI/replay

EdgeFirst Replay v3.0.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 03:54
6dd9050

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/replay

What's Changed

Changed

  • Breaking: Bumped edgefirst-schemas 3.4.0 → 4.0. Synthesized camera
    frames are now edgefirst_msgs/msg/CameraFrame on rt/camera/frame
    (default --dma-topic), matching the live camera 4.x wire contract.
    Recorded DmaBuffer and CameraFrame messages are still skipped because
    their fds are process-local. Consumers of rt/camera/dma / DmaBuffer
    must subscribe to CameraFrame instead; --camera-image-topic is
    unchanged.
  • Aligned Tracy with other EdgeFirst services: tracing-tracy 0.12.0,
    tracy-client 0.19.0, tracy-client-sys 0.30.0.
  • Upgraded videostream 2.5.2 → 2.5.3.

Full Documentation: https://github.com/EdgeFirstAI/replay#readme

EdgeFirst Replay v2.3.1

Choose a tag to compare

@github-actions github-actions released this 25 May 19:47
9c1eaf6

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/replay

What's Changed

No changelog entry for this version.


Full Documentation: https://github.com/EdgeFirstAI/replay#readme

EdgeFirst Replay v2.3.0

Choose a tag to compare

@github-actions github-actions released this 22 May 22:29
v2.3.0
1931098

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/replay

What's Changed

Changed

  • Breaking: rt/camera/dma now 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 from rt/camera/dma should switch to --camera-image-topic
    (sensor_msgs/Image, rgba8).
  • Bumped edgefirst-schemas 1.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 videostream to 2.5.2. Switched the h264 decoder construction
    from the legacy Decoder::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 _ex entry 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_msg retries 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 returns Io("Decoder Error") from
    the C library and is otherwise treated as fatal.
  • main is now sync (no #[tokio::main], no tokio::time::sleep, no
    tokio::process::Command). The edgefirst-hal 0.23.1 GL backend calls
    tokio::sync::oneshot::Receiver::blocking_recv during converter init,
    which panics inside a tokio runtime; making main sync sidesteps the
    collision. Service-handler invocations use std::process::Command and
    the inter-frame timing loop uses std::thread::sleep.

Removed

  • NXP G2D (g2d-sys), turbojpeg, dma-heap, tokio, and the per-frame
    cdr crate dependency. All image conversion, JPEG decoding, and CMA
    allocation now go through edgefirst-hal 0.23.1.
  • src/image.rs (G2D surface helpers, CMA-heap Image, MappedImage).

Added

  • --camera-image-topic (env CAMERA_IMAGE_TOPIC) and --camera-image-buffers
    (env CAMERA_IMAGE_BUFFERS, default 4) — opt-in sensor_msgs/Image RGBA
    publisher for consumers that need a non-dma-buf-aware decoded image stream.
    Backed by edgefirst-hal ImageProcessor (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-codec JPEG 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

Choose a tag to compare

@github-actions github-actions released this 27 Feb 03:02
v2.2.0
46d92dc

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/replay

What'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.default configuration file for systemd EnvironmentFile usage
  • replay.default published as a release artifact with install instructions

Full Documentation: https://github.com/EdgeFirstAI/replay#readme

EdgeFirst Replay v2.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Feb 08:58
v2.1.0
34361a7

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() and MappedImage::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 > 0 to != 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)