using TeamsISO.Engine.Domain;
namespace TeamsISO.Engine.Pipeline;
///
/// Per-pipeline configuration — identifies the participant, the source it captures,
/// the output it emits, and the global processing settings to apply.
///
public sealed record IsoPipelineConfig(
Guid ParticipantId,
string SourceName,
string OutputName,
FrameProcessingSettings Settings)
{
/// Default no-signal threshold per spec §4.
public TimeSpan SlateThreshold { get; init; } = TimeSpan.FromSeconds(2.5);
/// Bounded raw-frame channel capacity (drop-oldest backpressure).
public int RawChannelCapacity { get; init; } = 4;
/// Bounded processed-frame channel capacity.
public int ProcessedChannelCapacity { get; init; } = 2;
///
/// NDI groups (comma-separated) the output sender broadcasts on. null means
/// "use the NDI default" (Public). Set per pipeline so the controller can drive it
/// from the global NdiGroupSettings without changing this record's identity contract.
///
public string? OutputGroups { get; init; }
}