123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using MediaBrowser.Controller.Entities;
- using MediaBrowser.Controller.MediaEncoding;
- using MediaBrowser.Model.Dlna;
- using MediaBrowser.Model.Dto;
- using MediaBrowser.Model.Entities;
- using MediaBrowser.Model.IO;
- using MediaBrowser.Model.Logging;
- using MediaBrowser.Model.MediaInfo;
- namespace MediaBrowser.MediaEncoding.Encoder
- {
- // For now, a common base class until the API and MediaEncoding classes are unified
- public class EncodingJobInfo
- {
- private readonly ILogger _logger;
- public MediaStream VideoStream { get; set; }
- public VideoType VideoType { get; set; }
- public Dictionary<string, string> RemoteHttpHeaders { get; set; }
- public string OutputVideoCodec { get; set; }
- public MediaProtocol InputProtocol { get; set; }
- public string MediaPath { get; set; }
- public bool IsInputVideo { get; set; }
- public IIsoMount IsoMount { get; set; }
- public List<string> PlayableStreamFileNames { get; set; }
- public string OutputAudioCodec { get; set; }
- public int? OutputVideoBitrate { get; set; }
- public MediaStream SubtitleStream { get; set; }
- public SubtitleDeliveryMethod SubtitleDeliveryMethod { get; set; }
- public int InternalSubtitleStreamOffset { get; set; }
- public MediaSourceInfo MediaSource { get; set; }
- public User User { get; set; }
- public long? RunTimeTicks { get; set; }
- public bool ReadInputAtNativeFramerate { get; set; }
- public string OutputContainer { get; set; }
- public string OutputVideoSync = "-1";
- public string OutputAudioSync = "1";
- public string InputAudioSync { get; set; }
- public string InputVideoSync { get; set; }
- public TransportStreamTimestamp InputTimestamp { get; set; }
- public MediaStream AudioStream { get; set; }
- public List<string> SupportedAudioCodecs { get; set; }
- public List<string> SupportedVideoCodecs { get; set; }
- public string InputContainer { get; set; }
- public IsoType? IsoType { get; set; }
- public BaseEncodingJobOptions BaseRequest { get; set; }
- public long? StartTimeTicks
- {
- get { return BaseRequest.StartTimeTicks; }
- }
- public bool CopyTimestamps
- {
- get { return BaseRequest.CopyTimestamps; }
- }
- public int? OutputAudioChannels;
- public int? OutputAudioSampleRate;
- public bool DeInterlace { get; set; }
- public bool IsVideoRequest { get; set; }
- public EncodingJobInfo(ILogger logger)
- {
- _logger = logger;
- RemoteHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
- PlayableStreamFileNames = new List<string>();
- SupportedVideoCodecs = new List<string>();
- SupportedVideoCodecs = new List<string>();
- }
- /// <summary>
- /// Predicts the audio sample rate that will be in the output stream
- /// </summary>
- public double? TargetVideoLevel
- {
- get
- {
- var stream = VideoStream;
- var request = BaseRequest;
- return !string.IsNullOrEmpty(request.Level) && !request.Static
- ? double.Parse(request.Level, CultureInfo.InvariantCulture)
- : stream == null ? null : stream.Level;
- }
- }
- protected void DisposeIsoMount()
- {
- if (IsoMount != null)
- {
- try
- {
- IsoMount.Dispose();
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error disposing iso mount", ex);
- }
- IsoMount = null;
- }
- }
- }
- }
|