videowall: audio mixer beneath the canvas, audio/video/both source types, microphone source, and live VU meters#19
Draft
Copilot wants to merge 7 commits into
Draft
Conversation
Copilot created this pull request from a session on behalf of
havardgraff
June 5, 2026 19:48
View session
…th conference send/presentation buses
Copilot
AI
changed the title
Add videowall: a multi-instance Pulse compositor demo
videowall: production switcher with a source library, multi-canvas placement, and per-conference send/presentation buses
Jun 5, 2026
Copilot
AI
changed the title
videowall: production switcher with a source library, multi-canvas placement, and per-conference send/presentation buses
videowall: interactive canvas tiles, conference PIN codes, and a clean macOS build
Jun 8, 2026
Copilot
AI
changed the title
videowall: interactive canvas tiles, conference PIN codes, and a clean macOS build
videowall: 1080p send canvas, file picker, and an audio mixer
Jun 8, 2026
…hone source, fit-to-view canvas
Copilot
AI
changed the title
videowall: 1080p send canvas, file picker, and an audio mixer
videowall: audio mixer beneath the canvas, audio/video/both source types, microphone source, and live VU meters
Jun 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The
videowallswitcher kept the audio mixer in a separate tab, treated every source as video, had no audio-input source, couldn't show a full 1920×1080 canvas without scrolling, and its VU meters never moved.Changes
draw_stage()stacks the canvas tabs over the Audio Mixer with a draggable horizontal splitter (height persisted inAppState::mixer_height, clamped so neither pane collapses). The mixer is no longer a tab.draw_editable_canvas()scales bymin(scale_w, scale_h)and centers the canvas, replacing the old width-only scale in a fixed scrolling box, so the whole wall/1080p bus is visible at once.MediaType { Video, Audio, Both }per source, defaulted per kind (default_media_type) and overridable in the prepare form.source_has_video/source_has_audioroute placement: audio → mixer, video → canvas, both → both. Canvas drops reject audio-only; mixer skips video-only.SourceKind::Microphone(audio-only) that enumerates and connects an audio capture device viapulse_device_session_connect_device, with matching teardown and no video pipeline.pexninja); meters read silence because no source captured audio. A Microphone source now feedspulse_register_device_audio_level_callback(PULSE_MEDIA_INPUT) real input, so its meter moves. Sources with no captured audio still read silence, as expected.Notes
The VU answer is intrinsic to the API:
PULSE_MEDIA_INPUTaudio levels reflect a captured input device, not decoded stream audio — so RTMP/RTSP/MP4/conference strips markedBothwill read flat even though they carry audio. Routing and the mixer strip still make sense for them; only the live-meter signal is mic-specific.