update opening of live streams

This commit is contained in:
Luke Pulverenti 2017-07-02 14:58:56 -04:00
parent 6eec35ecbd
commit 15947c2a4c
10 changed files with 18 additions and 21 deletions

View File

@ -30,7 +30,7 @@ namespace Emby.Server.Implementations.Channels
return Task.FromResult<IEnumerable<MediaSourceInfo>>(new List<MediaSourceInfo>()); return Task.FromResult<IEnumerable<MediaSourceInfo>>(new List<MediaSourceInfo>());
} }
public Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> OpenMediaSource(string openToken, CancellationToken cancellationToken) public Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken)
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }

View File

@ -17,7 +17,7 @@ using MediaBrowser.Model.Tasks;
namespace Emby.Server.Implementations.Data namespace Emby.Server.Implementations.Data
{ {
public class CleanDatabaseScheduledTask : IScheduledTask public class CleanDatabaseScheduledTask : ILibraryPostScanTask
{ {
private readonly ILibraryManager _libraryManager; private readonly ILibraryManager _libraryManager;
private readonly IItemRepository _itemRepo; private readonly IItemRepository _itemRepo;
@ -49,7 +49,7 @@ namespace Emby.Server.Implementations.Data
get { return "Library"; } get { return "Library"; }
} }
public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress) public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
{ {
// Ensure these objects are lazy loaded. // Ensure these objects are lazy loaded.
// Without this there is a deadlock that will need to be investigated // Without this there is a deadlock that will need to be investigated

View File

@ -371,7 +371,7 @@ namespace Emby.Server.Implementations.Library
var tuple = GetProvider(request.OpenToken); var tuple = GetProvider(request.OpenToken);
var provider = tuple.Item1; 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; var mediaSource = mediaSourceTuple.Item1;

View File

@ -118,7 +118,7 @@ namespace Emby.Server.Implementations.LiveTv
return list; return list;
} }
public async Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> OpenMediaSource(string openToken, CancellationToken cancellationToken) public async Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken)
{ {
MediaSourceInfo stream = null; MediaSourceInfo stream = null;
const bool isAudio = false; const bool isAudio = false;
@ -140,7 +140,7 @@ namespace Emby.Server.Implementations.LiveTv
try 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); AddMediaInfo(stream, isAudio, cancellationToken);
} }

View File

@ -134,7 +134,7 @@ namespace MediaBrowser.Api.Playback
SetDeviceSpecificData(item, result.MediaSource, profile, authInfo, request.MaxStreamingBitrate, SetDeviceSpecificData(item, result.MediaSource, profile, authInfo, request.MaxStreamingBitrate,
request.StartTimeTicks ?? 0, result.MediaSource.Id, request.AudioStreamIndex, 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 else
{ {
@ -176,7 +176,7 @@ namespace MediaBrowser.Api.Playback
{ {
var mediaSourceId = request.MediaSourceId; 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) if (request.AutoOpenLiveStream)
@ -191,7 +191,6 @@ namespace MediaBrowser.Api.Playback
DeviceProfile = request.DeviceProfile, DeviceProfile = request.DeviceProfile,
EnableDirectPlay = request.EnableDirectPlay, EnableDirectPlay = request.EnableDirectPlay,
EnableDirectStream = request.EnableDirectStream, EnableDirectStream = request.EnableDirectStream,
ForceDirectPlayRemoteMediaSource = request.ForceDirectPlayRemoteMediaSource,
ItemId = request.Id, ItemId = request.Id,
MaxAudioChannels = request.MaxAudioChannels, MaxAudioChannels = request.MaxAudioChannels,
MaxStreamingBitrate = request.MaxStreamingBitrate, MaxStreamingBitrate = request.MaxStreamingBitrate,
@ -199,7 +198,8 @@ namespace MediaBrowser.Api.Playback
StartTimeTicks = request.StartTimeTicks, StartTimeTicks = request.StartTimeTicks,
SubtitleStreamIndex = request.SubtitleStreamIndex, SubtitleStreamIndex = request.SubtitleStreamIndex,
UserId = request.UserId, UserId = request.UserId,
OpenToken = mediaSource.OpenToken OpenToken = mediaSource.OpenToken,
AllowMediaProbe = request.AllowMediaProbe
}).ConfigureAwait(false); }).ConfigureAwait(false);

View File

@ -20,10 +20,7 @@ namespace MediaBrowser.Controller.Library
/// <summary> /// <summary>
/// Opens the media source. /// Opens the media source.
/// </summary> /// </summary>
/// <param name="openToken">The open token.</param> Task<Tuple<MediaSourceInfo,IDirectStreamProvider>> OpenMediaSource(string openToken, bool allowLiveStreamProbe, CancellationToken cancellationToken);
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;MediaSourceInfo&gt;.</returns>
Task<Tuple<MediaSourceInfo,IDirectStreamProvider>> OpenMediaSource(string openToken, CancellationToken cancellationToken);
/// <summary> /// <summary>
/// Closes the media source. /// Closes the media source.

View File

@ -17,13 +17,13 @@ namespace MediaBrowser.Model.MediaInfo
public bool EnableDirectPlay { get; set; } public bool EnableDirectPlay { get; set; }
public bool EnableDirectStream { get; set; } public bool EnableDirectStream { get; set; }
public bool ForceDirectPlayRemoteMediaSource { get; set; } public bool AllowMediaProbe { get; set; }
public LiveStreamRequest() public LiveStreamRequest()
{ {
ForceDirectPlayRemoteMediaSource = true;
EnableDirectPlay = true; EnableDirectPlay = true;
EnableDirectStream = true; EnableDirectStream = true;
AllowMediaProbe = true;
} }
public LiveStreamRequest(AudioOptions options) public LiveStreamRequest(AudioOptions options)

View File

@ -27,19 +27,19 @@ namespace MediaBrowser.Model.MediaInfo
public bool EnableDirectPlay { get; set; } public bool EnableDirectPlay { get; set; }
public bool EnableDirectStream { get; set; } public bool EnableDirectStream { get; set; }
public bool EnableTranscoding { get; set; } public bool EnableTranscoding { get; set; }
public bool ForceDirectPlayRemoteMediaSource { get; set; }
public bool AllowVideoStreamCopy { get; set; } public bool AllowVideoStreamCopy { get; set; }
public bool AllowAudioStreamCopy { get; set; } public bool AllowAudioStreamCopy { get; set; }
public bool AutoOpenLiveStream { get; set; } public bool AutoOpenLiveStream { get; set; }
public bool AllowMediaProbe { get; set; }
public PlaybackInfoRequest() public PlaybackInfoRequest()
{ {
ForceDirectPlayRemoteMediaSource = true;
EnableDirectPlay = true; EnableDirectPlay = true;
EnableDirectStream = true; EnableDirectStream = true;
EnableTranscoding = true; EnableTranscoding = true;
AllowVideoStreamCopy = true; AllowVideoStreamCopy = true;
AllowAudioStreamCopy = true; AllowAudioStreamCopy = true;
AllowMediaProbe = true;
} }
} }
} }

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Common</id> <id>MediaBrowser.Common</id>
<version>3.0.704</version> <version>3.0.705</version>
<title>Emby.Common</title> <title>Emby.Common</title>
<authors>Emby Team</authors> <authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>

View File

@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata> <metadata>
<id>MediaBrowser.Server.Core</id> <id>MediaBrowser.Server.Core</id>
<version>3.0.704</version> <version>3.0.705</version>
<title>Emby.Server.Core</title> <title>Emby.Server.Core</title>
<authors>Emby Team</authors> <authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners> <owners>ebr,Luke,scottisafool</owners>
@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Emby Server.</description> <description>Contains core components required to build plugins for Emby Server.</description>
<copyright>Copyright © Emby 2013</copyright> <copyright>Copyright © Emby 2013</copyright>
<dependencies> <dependencies>
<dependency id="MediaBrowser.Common" version="3.0.704" /> <dependency id="MediaBrowser.Common" version="3.0.705" />
</dependencies> </dependencies>
</metadata> </metadata>
<files> <files>