commit 5f42c57ecb7910e5b4eb427371bd86edab88955f
parent d8fc333ddeefd7db919e7eed2c34c233e202ffd6
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Thu, 1 Oct 2026 14:41:35 -0400
plans: the crossfade drift is fixed (d8fc333d), not left
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Diffstat:
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/plans/deck-posts.md b/plans/deck-posts.md
@@ -261,11 +261,9 @@ Gates on ebe10c84:
Found and left:
-- **The crossfade concat drifts the sound ahead of the picture, before this branch too.**
- Crossfaded segments have audio up to 40 ms shorter than their video (AAC framing), and
- `acrossfade` joins the sound by its own lengths while `xfade` uses the picture's. The ferret
- cut's audio is 359.901 s against 360.200 s of picture, as in the build made before this branch, so by the last
- clip the sound runs 0.3 s early. A `muteFrom` silences the right sound in the clip's own audio,
- but in the final it falls up to that drift before the matching picture. Padding each input's
- sound to its picture's length (`apad=whole_dur`) before the join would fix it, but that changes
- every crossfaded cut's graph.
+- **The crossfade concat drifted the sound ahead of the picture — fixed in 6771cfb8.** Encoded
+ segments' audio is routinely a few to ~20 ms off their video, and `acrossfade` joined the sound
+ by its own lengths while `xfade` used the picture's: the ferret cut's sound ran 0.3 s early by
+ the last clip (2.0 s on revision 2, with cards). `xfadeGraph` now pins each input's sound to its
+ length in the cut (`apad=whole_dur`, `atrim=end`) before the join, so a `muteFrom` lands on its
+ picture too. Every crossfaded cut's graph changed; `av-sync.test.mjs` holds it with real ffmpeg.