namespace ytLive.Services.Encoder;
///
/// Everything the FFmpeg subprocess encoder needs for one go-live (TASK 4 ship
/// step 3). is the FULL ingestion URL — the reusable
/// stream's ingest address plus its stream key (rtmp://a.rtmp.youtube.com/live2/<key>).
/// Resolution/FPS/bitrate come from the active quality tier; audio is a silent
/// placeholder track until the WASAPI capture step replaces the input.
///
public sealed class EncoderOptions
{
public string RtmpUrl { get; init; } = string.Empty;
public int Width { get; init; } = 1920;
public int Height { get; init; } = 1080;
public int Fps { get; init; } = 60;
public int BitrateKbps { get; init; } = 8000;
/// H.264 encoder name for -c:v; the encoder probes and prefers
/// nvenc → qsv → amf → libopenh264 when not forced.
public string? VideoEncoder { get; init; }
public int AudioSampleRate { get; init; } = 48000;
public int AudioChannels { get; init; } = 2;
/// GOP in frames = Fps × 4s — the YouTube keyframe ≤ 4s compliance bound.
public int GopSize => Fps * 4;
}