From 15947c2a4cd1588b30d6932eea5be0f41951af5b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 2 Jul 2017 14:58:56 -0400 Subject: [PATCH] update opening of live streams --- .../Channels/ChannelDynamicMediaSourceProvider.cs | 2 +- .../Data/CleanDatabaseScheduledTask.cs | 4 ++-- Emby.Server.Implementations/Library/MediaSourceManager.cs | 2 +- .../LiveTv/LiveTvMediaSourceProvider.cs | 4 ++-- MediaBrowser.Api/Playback/MediaInfoService.cs | 8 ++++---- MediaBrowser.Controller/Library/IMediaSourceProvider.cs | 5 +---- MediaBrowser.Model/MediaInfo/LiveStreamRequest.cs | 4 ++-- MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 10 files changed, 18 insertions(+), 21 deletions(-) diff --git a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs index 98011ddd48..7be4101c80 100644 --- a/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs +++ b/Emby.Server.Implementations/Channels/ChannelDynamicMediaSourceProvider.cs @@ -30,7 +30,7 @@ namespace Emby.Server.Implementations.Channels return Task.FromResult>(new List()); } - public Task> OpenMediaSource(string openToken, CancellationToken cancellationToken) + public Task> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken) { throw new NotImplementedException(); } diff --git a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs index df8d1ac451..f43e45441c 100644 --- a/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs +++ b/Emby.Server.Implementations/Data/CleanDatabaseScheduledTask.cs @@ -17,7 +17,7 @@ using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.Data { - public class CleanDatabaseScheduledTask : IScheduledTask + public class CleanDatabaseScheduledTask : ILibraryPostScanTask { private readonly ILibraryManager _libraryManager; private readonly IItemRepository _itemRepo; @@ -49,7 +49,7 @@ namespace Emby.Server.Implementations.Data get { return "Library"; } } - public async Task Execute(CancellationToken cancellationToken, IProgress progress) + public async Task Run(IProgress progress, CancellationToken cancellationToken) { // Ensure these objects are lazy loaded. // Without this there is a deadlock that will need to be investigated diff --git a/Emby.Server.Implementations/Library/MediaSourceManager.cs b/Emby.Server.Implementations/Library/MediaSourceManager.cs index 4857008f35..e4bc2962b2 100644 --- a/Emby.Server.Implementations/Library/MediaSourceManager.cs +++ b/Emby.Server.Implementations/Library/MediaSourceManager.cs @@ -371,7 +371,7 @@ namespace Emby.Server.Implementations.Library var tuple = GetProvider(request.OpenToken); var provider = tuple.Item1; - var mediaSourceTuple = await provider.OpenMediaSource(tuple.Item2, cancellationToken).ConfigureAwait(false); + var mediaSourceTuple = await provider.OpenMediaSource(tuple.Item2, request.AllowMediaProbe, cancellationToken).ConfigureAwait(false); var mediaSource = mediaSourceTuple.Item1; diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index 0329ea6066..919c0f10d6 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.LiveTv return list; } - public async Task> OpenMediaSource(string openToken, CancellationToken cancellationToken) + public async Task> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken) { MediaSourceInfo stream = null; const bool isAudio = false; @@ -140,7 +140,7 @@ namespace Emby.Server.Implementations.LiveTv try { - if (!stream.SupportsProbing || stream.MediaStreams.Any(i => i.Index != -1)) + if (!allowLiveStreamProbe || !stream.SupportsProbing || stream.MediaStreams.Any(i => i.Index != -1)) { AddMediaInfo(stream, isAudio, cancellationToken); } diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs index 6853ddbebf..ae7271844d 100644 --- a/MediaBrowser.Api/Playback/MediaInfoService.cs +++ b/MediaBrowser.Api/Playback/MediaInfoService.cs @@ -134,7 +134,7 @@ namespace MediaBrowser.Api.Playback SetDeviceSpecificData(item, result.MediaSource, profile, authInfo, request.MaxStreamingBitrate, request.StartTimeTicks ?? 0, result.MediaSource.Id, request.AudioStreamIndex, - request.SubtitleStreamIndex, request.MaxAudioChannels, request.PlaySessionId, request.UserId, request.EnableDirectPlay, request.ForceDirectPlayRemoteMediaSource, request.EnableDirectStream, true, true, true); + request.SubtitleStreamIndex, request.MaxAudioChannels, request.PlaySessionId, request.UserId, request.EnableDirectPlay, true, request.EnableDirectStream, true, true, true); } else { @@ -176,7 +176,7 @@ namespace MediaBrowser.Api.Playback { var mediaSourceId = request.MediaSourceId; - SetDeviceSpecificData(request.Id, info, profile, authInfo, request.MaxStreamingBitrate ?? profile.MaxStreamingBitrate, request.StartTimeTicks ?? 0, mediaSourceId, request.AudioStreamIndex, request.SubtitleStreamIndex, request.MaxAudioChannels, request.UserId, request.EnableDirectPlay, request.ForceDirectPlayRemoteMediaSource, request.EnableDirectStream, request.EnableTranscoding, request.AllowVideoStreamCopy, request.AllowAudioStreamCopy); + SetDeviceSpecificData(request.Id, info, profile, authInfo, request.MaxStreamingBitrate ?? profile.MaxStreamingBitrate, request.StartTimeTicks ?? 0, mediaSourceId, request.AudioStreamIndex, request.SubtitleStreamIndex, request.MaxAudioChannels, request.UserId, request.EnableDirectPlay, true, request.EnableDirectStream, request.EnableTranscoding, request.AllowVideoStreamCopy, request.AllowAudioStreamCopy); } if (request.AutoOpenLiveStream) @@ -191,7 +191,6 @@ namespace MediaBrowser.Api.Playback DeviceProfile = request.DeviceProfile, EnableDirectPlay = request.EnableDirectPlay, EnableDirectStream = request.EnableDirectStream, - ForceDirectPlayRemoteMediaSource = request.ForceDirectPlayRemoteMediaSource, ItemId = request.Id, MaxAudioChannels = request.MaxAudioChannels, MaxStreamingBitrate = request.MaxStreamingBitrate, @@ -199,7 +198,8 @@ namespace MediaBrowser.Api.Playback StartTimeTicks = request.StartTimeTicks, SubtitleStreamIndex = request.SubtitleStreamIndex, UserId = request.UserId, - OpenToken = mediaSource.OpenToken + OpenToken = mediaSource.OpenToken, + AllowMediaProbe = request.AllowMediaProbe }).ConfigureAwait(false); diff --git a/MediaBrowser.Controller/Library/IMediaSourceProvider.cs b/MediaBrowser.Controller/Library/IMediaSourceProvider.cs index b0881ba7c4..4ec9adf4e1 100644 --- a/MediaBrowser.Controller/Library/IMediaSourceProvider.cs +++ b/MediaBrowser.Controller/Library/IMediaSourceProvider.cs @@ -20,10 +20,7 @@ namespace MediaBrowser.Controller.Library /// /// Opens the media source. /// - /// The open token. - /// The cancellation token. - /// Task<MediaSourceInfo>. - Task> OpenMediaSource(string openToken, CancellationToken cancellationToken); + Task> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken); /// /// Closes the media source. diff --git a/MediaBrowser.Model/MediaInfo/LiveStreamRequest.cs b/MediaBrowser.Model/MediaInfo/LiveStreamRequest.cs index 025f1bc7a6..3033400308 100644 --- a/MediaBrowser.Model/MediaInfo/LiveStreamRequest.cs +++ b/MediaBrowser.Model/MediaInfo/LiveStreamRequest.cs @@ -17,13 +17,13 @@ namespace MediaBrowser.Model.MediaInfo public bool EnableDirectPlay { get; set; } public bool EnableDirectStream { get; set; } - public bool ForceDirectPlayRemoteMediaSource { get; set; } + public bool AllowMediaProbe { get; set; } public LiveStreamRequest() { - ForceDirectPlayRemoteMediaSource = true; EnableDirectPlay = true; EnableDirectStream = true; + AllowMediaProbe = true; } public LiveStreamRequest(AudioOptions options) diff --git a/MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs b/MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs index 1843fb69aa..afffe9b145 100644 --- a/MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs +++ b/MediaBrowser.Model/MediaInfo/PlaybackInfoRequest.cs @@ -27,19 +27,19 @@ namespace MediaBrowser.Model.MediaInfo public bool EnableDirectPlay { get; set; } public bool EnableDirectStream { get; set; } public bool EnableTranscoding { get; set; } - public bool ForceDirectPlayRemoteMediaSource { get; set; } public bool AllowVideoStreamCopy { get; set; } public bool AllowAudioStreamCopy { get; set; } public bool AutoOpenLiveStream { get; set; } + public bool AllowMediaProbe { get; set; } public PlaybackInfoRequest() { - ForceDirectPlayRemoteMediaSource = true; EnableDirectPlay = true; EnableDirectStream = true; EnableTranscoding = true; AllowVideoStreamCopy = true; AllowAudioStreamCopy = true; + AllowMediaProbe = true; } } } diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index ff58c13ac9..cb4d372a52 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.704 + 3.0.705 Emby.Common Emby Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index a5707a2654..76846b98c2 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.704 + 3.0.705 Emby.Server.Core Emby Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Emby Server. Copyright © Emby 2013 - +