using MediaBrowser.Common.Net; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using System.Collections.Generic; using System.IO; using System.Threading; namespace MediaBrowser.Api.Playback { public class StreamState { public string RequestedUrl { get; set; } public StreamRequest Request { get; set; } public VideoStreamRequest VideoRequest { get { return Request as VideoStreamRequest; } } /// /// Gets or sets the log file stream. /// /// The log file stream. public Stream LogFileStream { get; set; } public MediaStream AudioStream { get; set; } public MediaStream VideoStream { get; set; } public MediaStream SubtitleStream { get; set; } /// /// Gets or sets the iso mount. /// /// The iso mount. public IIsoMount IsoMount { get; set; } public string MediaPath { get; set; } public bool IsRemote { get; set; } public bool IsInputVideo { get; set; } public VideoType VideoType { get; set; } public IsoType? IsoType { get; set; } public List PlayableStreamFileNames { get; set; } public bool HasMediaStreams { get; set; } public bool SendInputOverStandardInput { get; set; } public CancellationTokenSource StandardInputCancellationTokenSource { get; set; } public string LiveTvStreamId { get; set; } public int SegmentLength = 10; public int HlsListSize; public long? RunTimeTicks; public string AudioSync = "1"; public string VideoSync = "vfr"; public bool DeInterlace { get; set; } public bool ReadInputAtNativeFramerate { get; set; } public string InputFormat { get; set; } public string InputVideoCodec { get; set; } public string InputAudioCodec { get; set; } public string GetMimeType(string outputPath) { if (!string.IsNullOrWhiteSpace(Request.ForcedMimeType)) { if (VideoRequest == null) { return "audio/" + Request.ForcedMimeType; } return "video/" + Request.ForcedMimeType; } return MimeTypes.GetMimeType(outputPath); } } }