Skip to content

Releases: Itz-Agasta/pinray

pinray 0.2.4 — Minor docs and crates.io tweaks

Choose a tag to compare

@Itz-Agasta Itz-Agasta released this 08 Jul 13:54

Fixed

  • Fixed the README banner rendering & doc links incorrectly on crates.io.

Happy blue hair GIF

pinray 0.2.2 — Stride fix, reachable docs, agent-friendly reference

Choose a tag to compare

@Itz-Agasta Itz-Agasta released this 08 Jul 13:19

Small follow-up to 0.2.0 - no breaking changes, all additive.

Highlights

  • Fixed a real silent-wrong bug: VideoFrame.stride can exceed the tightly-packed row size, and copying FrameData::Host bytes directly into a rawvideo pipe or encoder skewed every row after the first. Added VideoFrame::to_tight_bytes() and PixelFormat::bytes_per_pixel() to fix it at the API level.
  • The getting-started guide is now the docs.rs front page (include_str!'d into crate-level docs), instead of living only in docs/ where docs.rs visitors never saw it.
  • Documented the frame-pacing footgun (declared constant fps vs push-driven actual capture cadence desyncs muxed audio/video) with a worked example.
  • Audio-only capture now has its own first-class example instead of a one-line mention, plus an explicit callout that AudioCapture::Microphone isn't implemented on any backend yet (.build() fails eagerly with PinrayError::Unsupported).
  • Clarified why the docs.rs page redirects to a fixed target (no libpipewire on their Linux builders) and linked docs.rs/pinray-core as the always-correct, target-independent type reference.
  • Added llms.txt at the repo root - a reference checked directly against crates/core/src/*.rs, for agents/tools integrating the crate.

Upgrading

Drop-in - no API removed or changed, only additions.

Kana Arima GIF

pinray 0.2.0 — Native Screen & System Audio Capture Across Linux, macOS, and Windows

Choose a tag to compare

@Itz-Agasta Itz-Agasta released this 06 Jul 19:55
29242b2

Pinray 0.2.0 is the first feature-complete release, bringing native video capture and system audio support across Linux, macOS, and Windows through a unified Rust API.

Highlights

  • Native display and window capture across all desktop platforms.
  • System audio capture on Linux, macOS, and Windows.
  • Consistent timestamps for audio/video synchronization.
  • Improved documentation, examples, and CI.

Platform Support

Windows

  • DXGI Desktop Duplication backend for high-performance display capture.
  • Windows Graphics Capture (WGC) backend for window capture with automatic fallback.
  • WASAPI shared-mode loopback for system audio capture.
  • Shared boot-relative timestamps across audio and video.

macOS

  • ScreenCaptureKit backend for display and window capture.
  • System audio capture through SCStream.
  • Improved screen-recording permission handling.
  • Boot-relative timestamps with optional BGRA → RGBA conversion.

Linux

  • Native X11 backend for display and window capture.
  • PipeWire system audio capture.
  • Shared monotonic timestamps for synchronized audio and video.

Core Improvements

  • Added new backend kinds:
    • WindowsDxgi
    • WindowsWgc
    • WindowsWasapi
    • LinuxX11
    • LinuxPipeWireAudio
    • MacosSckit
  • Improved session muxing to prevent audio starvation.
  • Some(Duration::ZERO) is now guaranteed to perform a non-blocking poll.

Documentation & CI

  • New getting-started guide and platform support matrix.
  • Expanded rustdoc with runnable examples.
  • CI now runs on Linux, macOS, and Windows.
  • Fixed docs.rs builds.

⚠️ Breaking Changes

  • BackendKind and BackendPreference gained new variants.
  • Timestamp semantics are now explicitly defined per platform. Consumers should compare timestamp deltas rather than absolute values across machines.

Pinray Demo

Thanks to everyone who tested Pinray during the 0.1.x releases! Feedback, bug reports, and contributions are always welcome.