namespace DeepDrftContent.Processors.Opus; /// /// Host-supplied configuration for the Opus transcode. The only operationally significant knob is /// — the transcode shells out to FFmpeg (libopus), which must be present on the /// DeepDrftAPI host (see the wave handoff notes). Defaults target Ogg Opus fullband (48 kHz) at 320 kbps, /// the artifact the spec fixes (§1). /// public sealed class OpusTranscodeOptions { /// /// Path to the ffmpeg executable. Empty/null resolves to "ffmpeg" (found on PATH). Override /// with an absolute path when the binary is not on the host PATH. /// public string FfmpegPath { get; set; } = "ffmpeg"; /// Target Opus bitrate in kbps. 320 kbps fullband is the fixed artifact quality (§1). public int BitrateKbps { get; set; } = 320; /// /// Directory for the transient source/output files the transcode stages. Defaults to the system /// temp path; the host overrides it to the data-disk upload-staging directory so large files never /// land on the small RAM-backed /tmp tmpfs (same constraint the upload path already honours). /// public string StagingPath { get; set; } = Path.GetTempPath(); /// /// Hard ceiling on a single transcode, in seconds. A run that exceeds it is killed and the track /// stays lossless-only (C6). Generous by default — a 1 GB mix is CPU-expensive (§3.1) — but bounded /// so a hung ffmpeg never wedges the background worker. /// public int TimeoutSeconds { get; set; } = 3600; }