diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-02-07 16:03:09 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-02-07 16:03:09 -0500 |
| commit | 9110d23710980eecc112753af46f7fcda7558364 (patch) | |
| tree | 91582bcfd727600f8b9f3c2a6815899891c098ac /MediaBrowser.Server.Implementations | |
| parent | 49c0878a4b295e7882613b989953f2c753fc8bca (diff) | |
added SupportsExternalStream to MediaStream
Diffstat (limited to 'MediaBrowser.Server.Implementations')
4 files changed, 58 insertions, 5 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs new file mode 100644 index 000000000..a45757d13 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -0,0 +1,51 @@ +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Persistence; +using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Linq; + +namespace MediaBrowser.Server.Implementations.Library +{ + public class MediaSourceManager : IMediaSourceManager + { + private readonly IItemRepository _itemRepo; + + public MediaSourceManager(IItemRepository itemRepo) + { + _itemRepo = itemRepo; + } + + public IEnumerable<MediaStream> GetMediaStreams(MediaStreamQuery query) + { + var list = _itemRepo.GetMediaStreams(query) + .ToList(); + + foreach (var stream in list) + { + stream.SupportsExternalStream = StreamSupportsExternalStream(stream); + } + + return list; + } + + private bool StreamSupportsExternalStream(MediaStream stream) + { + if (stream.IsExternal) + { + return true; + } + + if (stream.IsTextSubtitleStream) + { + return InternalTextStreamSupportsExternalStream(stream); + } + + return false; + } + + private bool InternalTextStreamSupportsExternalStream(MediaStream stream) + { + return true; + } + } +} diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index bf11e4ef6..ce77b3db1 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -185,6 +185,7 @@ <Compile Include="Library\CoreResolutionIgnoreRule.cs" /> <Compile Include="Library\LibraryManager.cs" /> <Compile Include="Library\LocalTrailerPostScanTask.cs" /> + <Compile Include="Library\MediaSourceManager.cs" /> <Compile Include="Library\MusicManager.cs" /> <Compile Include="Library\PathExtensions.cs" /> <Compile Include="Library\Resolvers\SpecialFolderResolver.cs" /> diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 6166e3d65..308f46c23 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -56,7 +56,7 @@ namespace MediaBrowser.Server.Implementations.Session private readonly IMusicManager _musicManager; private readonly IDtoService _dtoService; private readonly IImageProcessor _imageProcessor; - private readonly IItemRepository _itemRepo; + private readonly IMediaSourceManager _mediaSourceManager; private readonly IHttpClient _httpClient; private readonly IJsonSerializer _jsonSerializer; @@ -97,7 +97,7 @@ namespace MediaBrowser.Server.Implementations.Session private readonly SemaphoreSlim _sessionLock = new SemaphoreSlim(1, 1); - public SessionManager(IUserDataManager userDataRepository, ILogger logger, IUserRepository userRepository, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IItemRepository itemRepo, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager) + public SessionManager(IUserDataManager userDataRepository, ILogger logger, IUserRepository userRepository, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager) { _userDataRepository = userDataRepository; _logger = logger; @@ -107,12 +107,12 @@ namespace MediaBrowser.Server.Implementations.Session _musicManager = musicManager; _dtoService = dtoService; _imageProcessor = imageProcessor; - _itemRepo = itemRepo; _jsonSerializer = jsonSerializer; _appHost = appHost; _httpClient = httpClient; _authRepo = authRepo; _deviceManager = deviceManager; + _mediaSourceManager = mediaSourceManager; _deviceManager.DeviceOptionsUpdated += _deviceManager_DeviceOptionsUpdated; } @@ -1560,7 +1560,7 @@ namespace MediaBrowser.Server.Implementations.Session if (!string.IsNullOrWhiteSpace(mediaSourceId)) { - info.MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery + info.MediaStreams = _mediaSourceManager.GetMediaStreams(new MediaStreamQuery { ItemId = new Guid(mediaSourceId) diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs index c299bf155..e9d9dc46f 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs @@ -616,7 +616,8 @@ namespace MediaBrowser.Server.Implementations.Sync IsForced = subtitle.IsForced, IsExternal = true, Language = subtitle.Language, - Path = fileInfo.Path + Path = fileInfo.Path, + SupportsExternalStream = true }); startingIndex++; |
