namespace EmbyToolbox.Models; /// Одна встроенная дорожка из ffprobe (streams[]). public sealed class MediaStreamInfo { public int Index { get; init; } public MediaStreamKind Kind { get; init; } public string CodecName { get; init; } = string.Empty; public string? Language { get; init; } public string? Title { get; init; } public bool IsDefault { get; init; } public long? BitRateBps { get; init; } public string? Profile { get; init; } public string? Encoder { get; init; } public int? Channels { get; init; } public int? SampleRateHz { get; init; } public int? Width { get; init; } public int? Height { get; init; } public double? AverageFrameRate { get; init; } public double? FrameRate { get; init; } public string? PixelFormat { get; init; } /// Цветметаданные из ffprobe (video): color_space, color_primaries, color_transfer. public string? ColorSpace { get; init; } public string? ColorPrimaries { get; init; } public string? ColorTransfer { get; init; } public string? SubtitleFormat { get; init; } public string? FileNameTag { get; init; } public bool IsForcedByDisposition { get; init; } public bool IsForced { get; init; } public string? ForcedDetectionReason { get; init; } public int? SubtitleEventCount { get; init; } public double? SubtitleCoverage { get; init; } /// Длительность дорожки (сек) из ffprobe, если задана. public double? DurationSeconds { get; init; } /// Для потоков-вложений matroska: тег ffprobe tags.filename. public string? AttachmentDeclaredFileName { get; init; } /// Для потоков-вложений: tags.mimetype. public string? AttachmentDeclaredMimeType { get; init; } }