/* SH-01: rencana perekaman klip Strip Hidup. Fungsi murni, tanpa DOM: 10 bingkai selebar 480 px pada 1,5 detik terakhir hitung mundur, diambil dari mesin keadaan yang sama (ARCHITECTURE ยง5). Sampling berhenti di 2850 ms, jadi momen jepret di 3000 ms tidak pernah tersentuh perekaman. */ import { COUNTDOWN_FROM, COUNTDOWN_STEP_MS } from "./machine" export const CLIP_FRAME_COUNT = 10 export const CLIP_FRAME_WIDTH = 480 export const CLIP_WINDOW_MS = 1500 export const CLIP_SAMPLE_INTERVAL_MS = CLIP_WINDOW_MS / CLIP_FRAME_COUNT interface ClipPlan { /** Jeda tiap bingkai dari awal fase hitung mundur, dalam milidetik. */ sampleOffsetsMs: number[] } export function planClipRecording( countdownFrom: number = COUNTDOWN_FROM, stepMs: number = COUNTDOWN_STEP_MS ): ClipPlan { const durationMs = countdownFrom * stepMs const start = durationMs - CLIP_WINDOW_MS return { sampleOffsetsMs: Array.from( { length: CLIP_FRAME_COUNT }, (_, index) => start + index * CLIP_SAMPLE_INTERVAL_MS ), } }