Skip to content

Feature/rust sdk video - #303

Draft
dangusev wants to merge 15 commits into
mainfrom
feature/rust-sdk-video
Draft

dangusev wants to merge 15 commits into
mainfrom
feature/rust-sdk-video

Conversation

@dangusev

@dangusev dangusev commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@coderabbitai

coderabbitai Bot commented Oct 2, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Build
- rust-toolchain.toml pins Rust 1.88, the minimum version of the Rust
  Video SDK.
- Cargo.toml builds getstream._native from rustsrc/ against the SDK
  (stream-video-rust, branch fix/compatibility-fixes).
- pyproject.toml uses maturin instead of hatchling, and uv cache keys make
  uv sync rebuild after Rust changes.
- release-please also updates the version in Cargo.toml and Cargo.lock.
- AGENTS.md lists the native build requirements.

Binding
- Client/Call: join, leave, session_id and calling_state as awaitables and
  properties; SDK errors raise Error and RtcError. join() waits until a
  cancelled join has finished its cleanup.
- events() and tracks(): async iterators that end when the call ends;
  participants() and call_state().
- Media: RemoteTrack.next_pcm()/next_video_frame() return numpy arrays
  without a copy; LocalAudioTrack/LocalVideoTrack, publish_audio(),
  publish_video() and update_subscriptions().

Logging
- SDK tracing events and third-party log records reach Python logging
  through a bounded queue and one forwarding thread, so a thread that logs
  never waits for the GIL.
- configure_logging(logger, level, third_party_level=WARNING); records keep
  the time of the Rust event.
- Client(log_bodies=True) logs redacted request and response bodies.
SDK logs are now visible in pytest runs
Fewer requests get sent to the backend this way
- Call.stop_publish_audio, stop_publish_video, stop_publish_screen_share
- Call.publish_screen_share (VP8)
- LocalAudioTrack(pcm_queue_capacity) in seconds
- __repr__ for participants, events, remote tracks and frames
- AGENTS.md: sdk_logs is for assertions on records
- Emit SFU events, coordinator custom events, connection state changes,
  call_ended, track_added and audio from the SDK event and track streams,
  with stream-py payload classes instead of protobuf.
- Join with an API secret or a user token; apply subscription configs.
- Publish aiortc audio and video tracks through AudioForwarder and
  VideoForwarder (VP9 video, mono audio, unpaced AudioStreamTrack option).
- Key participants_state by session_id, include the local participant and
  refill it after lost events.
- Add RemoteTrack.video_frames(): an independent latest-frame stream for
  each reader, in place of next_video_frame().
- Remove local recording.
- Add migration.md with the breaking changes versus 4.1.0.
@dangusev
dangusev force-pushed the feature/rust-sdk-video branch from 8805bd0 to a17f9eb Compare October 2, 2026 12:41
Consumers import RemoteTrack, RemoteParticipant, TrackType,
VideoFrameStream, VideoFrame and the emitted event classes from the public
package instead of getstream._rust.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant