Repository navigation
Preserve buffered recording data during finalization - #58
Draft
steveseguin wants to merge 2 commits into
Draft
steveseguin wants to merge 2 commits into
steveseguin wants to merge 2 commits into
Conversation
|
|
This was referenced Oct 4, 2026
This branch has not been deployed
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.
Problem
GLibWebRTCHandler.finalize_recordingspushes EOS from each recording queue's source pad. This bypasses media still buffered inside the queue. A sink can finish successfully, and the handler can log "Recording container finalization complete", before that buffered tail reaches the file. The subsequent NULL transition discards it.Change
Send EOS into each queue's sink pad instead, so the queue processes previously buffered media before forwarding EOS. Preserve the existing branch selection, duplicate-queue protection, failure handling, and bus-wait timeout.
Add six focused regressions in the existing recording test module for sink-pad dispatch on both tracks, duplicate queues, rejection, exceptions, missing pads, and recording that has not started.
Verification
finalize_recordingsmethods (AST-extracted only to avoid unavailable module-startup dependencies). One track writes[0]before /[15]after; two tracks write[0, 0]before /[15, 15]after. Both versions report EOS completion. The thin native bus adapter exercises EOS success, not ERROR parsing.git diff --checkpass.websockets; native Gst Python typelibs are also unavailable. This is not a complete-suite pass.2198f18285196c43d8a5af6826c0db896b3d2d91.The reproduction establishes buffered-data retention, not RTP depayloading, real mux/container integrity, physical-device behavior, or end-to-end interoperability. No devices, real media, external signaling/services, merge, or deployment were used. No strict wall-clock shutdown bound is claimed: the existing timeout bounds bus waiting.
Reviewed against main
4f94ca2dcfced9f67eb72acf4102518cd3ef6674. This is independent of the VP9/AV1 startup fix in #57.Reference: GStreamer queue EOS behavior and GstPad.send_event.