namespace ErsatzTV.Core.FFmpeg;

/// <summary>
/// Timing + descriptive result of an HLS cold-start's wait-for-first-segments phase (#350).
/// <see cref="ProcessStartup"/> is Phase A (wait entry -&gt; playlist file exists — approximately
/// FFmpeg process spawn + probe + libass/encoder init + first GOP, since the wait begins right
/// after the fire-and-forget worker is launched); <see cref="SegmentFill"/> is Phase B (playlist
/// exists -&gt; the requested number of segments are present, or the 8s deadline).
/// <see cref="StartupSplit"/> breaks Phase A down further (#472).
/// </summary>
public readonly record struct PlaylistSegmentsResult(
    TimeSpan ProcessStartup,
    TimeSpan SegmentFill,
    int SegmentsReached,
    int InitialSegmentCount,
    bool DeadlineExpired,
    ColdStartFeatures Features,
    ColdStartStartupSplit StartupSplit);
