Select a diagram
← pick a diagram from the sidebar
In the Python-only pipeline, scene detection was a branch of the same ffmpeg process that records (fMP4 + UDP relay + CUDA decode + select filter). The flush trick worked because all outputs shared one decoder.
After Rust took over transport, scene detection became a separate ffmpeg fed via scene.sock Unix socket relay. Different buffering semantics broke the "one behind" flush fix, and try_send drops cause decoder corruption until the next keyframe.
The Python-only path (StreamRecorder + SessionProcessor) still exists. lifecycle.start(rust_transport=False) bypasses Rust transport entirely. Plan: restore this as the default, keep Rust opt-in.
Add scene detection as a third output of the Rust server's ffmpeg command (decode + select filter + MJPEG pipe) instead of relaying raw H.264 to a separate process. See def/10-scene-detect-to-rust.md.
← pick a diagram from the sidebar