Skip to content

Add framerate and GL passthrough properties to vision mixer#481

Merged
srperens merged 3 commits intomainfrom
fix/vision-mixer-properties
Apr 8, 2026
Merged

Add framerate and GL passthrough properties to vision mixer#481
srperens merged 3 commits intomainfrom
fix/vision-mixer-properties

Conversation

@srperens
Copy link
Copy Markdown
Collaborator

@srperens srperens commented Apr 8, 2026

Summary

  • Add separate PGM and multiview framerate properties to the vision mixer (fraction format N/D, default 30/1)
  • Add gl_download toggle to skip gldownload/capsfilter in the GPU pipeline, allowing GL memory passthrough to downstream blocks
  • Hardcode force-live=true on compositors (was always the default, now no longer user-configurable)
  • Extract shared COMMON_VIDEO_FRAMERATES and common_video_framerate_enum_values() into strom-types, reused by videoformat block
  • Remove redundant fakesink elements from tee branches in both GPU and CPU pipelines

Test plan

  • Verify vision mixer starts with default framerate (30 fps) on both PGM and multiview outputs
  • Change PGM framerate to 25/1 and confirm output caps update
  • Test GL download disabled: downstream GL-capable block receives GL memory buffers
  • Test GL download enabled (default): downstream receives system memory as before
  • Verify CPU pipeline path still works (no gldownload toggle effect)
  • Run cargo test — includes new parse_framerate unit tests

🤖 Generated with Claude Code

Per Enstedt and others added 3 commits April 8, 2026 12:34
- Add pgm_framerate and multiview_framerate properties with broadcast
  standard options (23.976, 24, 25, 29.97, 30, 50, 59.94, 60 fps).
  Default 30 fps matching GStreamer default.
- Add gl_download property to control GPU→system memory download in
  GPU path. When disabled, GL memory passes through to downstream
  blocks, avoiding unnecessary GPU→CPU→GPU roundtrips.
- Remove force_live exposed property (hardcoded to true — disabling
  it on a live vision mixer breaks the pipeline).
- Remove fakesink elements from both PGM and MV output tees in GPU
  and CPU paths. The tees use allow-not-linked=true and always have
  active consumers, making fakesinks unnecessary overhead.
- Move framerate enum values to shared COMMON_VIDEO_FRAMERATES in
  strom-types so both vision mixer and videoformat blocks use the
  same list. Videoformat block updated to use fraction format with
  backward-compatible decimal parsing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@srperens srperens merged commit 1a65466 into main Apr 8, 2026
7 checks passed
@srperens srperens deleted the fix/vision-mixer-properties branch April 8, 2026 11:07
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