V45: tang FILL 24->48 (cushion 256ms) chong stall OS ~200ms (PDC 14080)

This commit is contained in:
2026-08-29 08:00:22 +07:00
parent 2afa828c8f
commit 2a3e5bf08f
2 changed files with 5 additions and 5 deletions
+2 -2
View File
@@ -29,10 +29,10 @@ class SfFxRealtimeProcessor extends AudioWorkletProcessor {
super();
this.BLOCK = 256; // FXRT_BLOCK
this.BURST = 4; // số block gom 1 frame (bridge batch)
this.FILL = 24; // V44: 24 block ~128ms @48k: buffer khởi đầu — hấp thụ jitter main-thread + stall deschedule bridge 68-138ms. PDC 7936 = (7+24)*256 (fxRtApplyPdc). V43 16 -> cushion ~9 (q 3-9) chua du: stall 68-82ms van gay underrun. V44 len 24 -> cushion ~17 (~90ms).
this.FILL = 48; // V45: 48 block ~256ms @48k: hấp thụ stall OS-level ~200ms (V44 21:17:37.9: engine pump 198ms + main 196ms cùng lúc → u=2 underrun → lag 20-30s). PDC 14080 = (7+48)*256 (fxRtApplyPdc). V44 24 -> cushion 128ms < stall 196ms -> underrun. V45 48 -> cushion 256ms (margin ~60ms).
this.RESUME_FILL = 24; // V26: re-buffer khi resume SAU STOP (flush_for_stop) — 16 block ~85ms (V43: = FILL) → play kế tiếp bắt đầu nhanh; underrun-stall vẫn dùng FILL (crackle/wobble).
this.resumeFill = this.FILL; // mức re-buffer khi resume sau flush — stop: RESUME_FILL, underrun-stall: FILL
this.CAP = 32; // V40: cap queue chặn overflow (~170ms)
this.CAP = 56; // V45: = FILL+8: cap queue chặn overflow (~300ms)
this.HOLD_FADE = 4; // 4 block ~21ms: fade 1→0 sau HOLD hết (hết click cắt cứng)
this.holdFadeLeft = 0; // mẫu còn lại của fade-out khi underrun
this.silenced = false; // đã fade về 0 → im lặng; resume phải fade-in, không hold lại