diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-09-30 02:50:06 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-09-30 02:50:06 -0400 |
| commit | 6a7fabc3bd4ab8496a90bd04e9decf48bf16edc2 (patch) | |
| tree | 4c8a691b08eaaca4e90b0689b0a52e7a697ceb68 /MediaBrowser.Api | |
| parent | dcfda6d7779d8ee75eb2baa5f7cb798b2b5261c8 (diff) | |
add new guide settings
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/LiveTv/LiveTvService.cs | 52 | ||||
| -rw-r--r-- | MediaBrowser.Api/Playback/BaseStreamingService.cs | 1 |
2 files changed, 52 insertions, 1 deletions
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs index 9c11050823..5b821df0bd 100644 --- a/MediaBrowser.Api/LiveTv/LiveTvService.cs +++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs @@ -104,6 +104,26 @@ namespace MediaBrowser.Api.LiveTv [ApiMember(Name = "EnableUserData", Description = "Optional, include user data", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")] public bool? EnableUserData { get; set; } + public string SortBy { get; set; } + + public SortOrder? SortOrder { get; set; } + + /// <summary> + /// Gets the order by. + /// </summary> + /// <returns>IEnumerable{ItemSortBy}.</returns> + public string[] GetOrderBy() + { + var val = SortBy; + + if (string.IsNullOrEmpty(val)) + { + return new string[] { }; + } + + return val.Split(','); + } + public GetChannels() { AddCurrentProgram = true; @@ -650,6 +670,8 @@ namespace MediaBrowser.Api.LiveTv { public string Id { get; set; } public string Container { get; set; } + public long T { get; set; } + public long S { get; set; } } public class LiveTvService : BaseApiService @@ -681,9 +703,35 @@ namespace MediaBrowser.Api.LiveTv outputHeaders["Content-Type"] = MimeTypes.GetMimeType(filePath); + long startPosition = 0; + + if (request.T > 0) + { + var now = DateTime.UtcNow; + + var totalTicks = now.Ticks - request.S; + + if (totalTicks > 0) + { + double requestedOffset = request.T; + requestedOffset = Math.Max(0, requestedOffset - TimeSpan.FromSeconds(10).Ticks); + + var pct = requestedOffset / totalTicks; + + Logger.Info("Live stream offset pct {0}", pct); + + var bytes = new FileInfo(filePath).Length; + Logger.Info("Live stream total bytes {0}", bytes); + startPosition = Convert.ToInt64(pct * bytes); + } + } + + Logger.Info("Live stream starting byte position {0}", startPosition); + var streamSource = new ProgressiveFileCopier(_fileSystem, filePath, outputHeaders, null, Logger, CancellationToken.None) { - AllowEndOfFile = false + AllowEndOfFile = false, + StartPosition = startPosition }; return ResultFactory.GetAsyncStreamWriter(streamSource); @@ -848,6 +896,8 @@ namespace MediaBrowser.Api.LiveTv IsNews = request.IsNews, IsKids = request.IsKids, IsSports = request.IsSports, + SortBy = request.GetOrderBy(), + SortOrder = request.SortOrder ?? SortOrder.Ascending, AddCurrentProgram = request.AddCurrentProgram }, CancellationToken.None).ConfigureAwait(false); diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 8e57650b4a..fb4bd92445 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -2602,6 +2602,7 @@ namespace MediaBrowser.Api.Playback inputModifier += " " + GetFastSeekCommandLineParameter(state.Request); inputModifier = inputModifier.Trim(); + //inputModifier += " -fflags +genpts+ignidx+igndts"; if (state.VideoRequest != null && genPts) { inputModifier += " -fflags +genpts"; |
