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;
}