diff --git a/ctrl/sync.sh b/ctrl/sync.sh index 9d5d1c0..4837c48 100755 --- a/ctrl/sync.sh +++ b/ctrl/sync.sh @@ -17,6 +17,7 @@ git -C "$PROJECT_DIR" ls-files --others --ignored --exclude-standard --directory rsync -avz --delete \ --exclude='.git/' \ + --exclude='data/' \ --exclude-from="$EXCLUDE_FILE" \ "$PROJECT_DIR/" \ "${REMOTE}:${REMOTE_PATH}" diff --git a/media/docs/index.html b/media/docs/index.html index 749fbb9..d5a83aa 100644 --- a/media/docs/index.html +++ b/media/docs/index.html @@ -130,8 +130,33 @@ Pipeline + +
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.