1/* SH-01: rencana perekaman klip Strip Hidup. Fungsi murni, tanpa DOM: 10
2 bingkai selebar 480 px pada 1,5 detik terakhir hitung mundur, diambil dari
3 mesin keadaan yang sama (ARCHITECTURE §5). Sampling berhenti di 2850 ms,
4 jadi momen jepret di 3000 ms tidak pernah tersentuh perekaman. */
5
6import { COUNTDOWN_FROM, COUNTDOWN_STEP_MS } from "./machine"
7
8export const CLIP_FRAME_COUNT = 10
9export const CLIP_FRAME_WIDTH = 480
10export const CLIP_WINDOW_MS = 1500
11export const CLIP_SAMPLE_INTERVAL_MS = CLIP_WINDOW_MS / CLIP_FRAME_COUNT
12
13interface ClipPlan {
14 /** Jeda tiap bingkai dari awal fase hitung mundur, dalam milidetik. */
15 sampleOffsetsMs: number[]
16}
17
18export function planClipRecording(
19 countdownFrom: number = COUNTDOWN_FROM,
20 stepMs: number = COUNTDOWN_STEP_MS
21): ClipPlan {
22 const durationMs = countdownFrom * stepMs
23 const start = durationMs - CLIP_WINDOW_MS
24 return {
25 sampleOffsetsMs: Array.from(
26 { length: CLIP_FRAME_COUNT },
27 (_, index) => start + index * CLIP_SAMPLE_INTERVAL_MS
28 ),
29 }
30}
31