diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-02-08 15:00:36 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-08 15:00:36 -0500 |
| commit | 52d496386fd6a042aa0812deea052fc563688585 (patch) | |
| tree | c053a78597990e294560b7b745e8939e10f1c10f /Emby.Server.Implementations | |
| parent | b073cdc91ff8fa783d8cd62bfdf9f03062c1a703 (diff) | |
| parent | 2fa03c19d48fca865f108895f28b7fb436b9edf4 (diff) | |
Merge pull request #2451 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations')
6 files changed, 49 insertions, 18 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index de3a1664e..616c6c1a2 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -2627,6 +2627,18 @@ namespace Emby.Server.Implementations.Library } } + foreach (var map in ConfigurationManager.Configuration.PathSubstitutions) + { + if (!string.IsNullOrWhiteSpace(map.From)) + { + var substitutionResult = SubstitutePathInternal(path, map.From, map.To); + if (substitutionResult.Item2) + { + return substitutionResult.Item1; + } + } + } + return path; } diff --git a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs index 6cf201990..2971405b9 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs @@ -74,21 +74,20 @@ namespace Emby.Server.Implementations.Library.Resolvers.Audio return new MusicArtist(); } - return null; - //if (_config.Configuration.EnableSimpleArtistDetection) - //{ - // return null; - //} + if (_config.Configuration.EnableSimpleArtistDetection) + { + return null; + } - //// Avoid mis-identifying top folders - //if (args.Parent.IsRoot) return null; + // Avoid mis-identifying top folders + if (args.Parent.IsRoot) return null; - //var directoryService = args.DirectoryService; + var directoryService = args.DirectoryService; - //var albumResolver = new MusicAlbumResolver(_logger, _fileSystem, _libraryManager); + var albumResolver = new MusicAlbumResolver(_logger, _fileSystem, _libraryManager); - //// If we contain an album assume we are an artist folder - //return args.FileSystemChildren.Where(i => i.IsDirectory).Any(i => albumResolver.IsMusicAlbum(i.FullName, directoryService, args.GetLibraryOptions())) ? new MusicArtist() : null; + // If we contain an album assume we are an artist folder + return args.FileSystemChildren.Where(i => i.IsDirectory).Any(i => albumResolver.IsMusicAlbum(i.FullName, directoryService, args.GetLibraryOptions())) ? new MusicArtist() : null; } } diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs index 1ec5dd1d5..fe114d224 100644 --- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs +++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs @@ -1163,7 +1163,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV }; var isAudio = false; - await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, cancellationToken).ConfigureAwait(false); + await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, false, cancellationToken).ConfigureAwait(false); return new List<MediaSourceInfo> { diff --git a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs index 0313e6fde..2ee6869f6 100644 --- a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs +++ b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using MediaBrowser.Controller.MediaEncoding; using MediaBrowser.Model.Dlna; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; namespace Emby.Server.Implementations.LiveTv @@ -21,7 +22,7 @@ namespace Emby.Server.Implementations.LiveTv _logger = logger; } - public async Task AddMediaInfoWithProbe(MediaSourceInfo mediaSource, bool isAudio, CancellationToken cancellationToken) + public async Task AddMediaInfoWithProbe(MediaSourceInfo mediaSource, bool isAudio, bool assumeInterlaced, CancellationToken cancellationToken) { var originalRuntime = mediaSource.RunTimeTicks; @@ -95,6 +96,17 @@ namespace Emby.Server.Implementations.LiveTv videoStream.IsAVC = null; } + if (assumeInterlaced) + { + foreach (var mediaStream in mediaSource.MediaStreams) + { + if (mediaStream.Type == MediaStreamType.Video) + { + mediaStream.IsInterlaced = true; + } + } + } + // Try to estimate this mediaSource.InferTotalBitrate(true); } diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs index 613a30b1d..e30280967 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs @@ -246,9 +246,9 @@ namespace Emby.Server.Implementations.LiveTv return info.Item1; } - public async Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> GetChannelStream(string id, string mediaSourceId, CancellationToken cancellationToken) + public Task<Tuple<MediaSourceInfo, IDirectStreamProvider, bool>> GetChannelStream(string id, string mediaSourceId, CancellationToken cancellationToken) { - return await GetLiveStream(id, mediaSourceId, true, cancellationToken).ConfigureAwait(false); + return GetLiveStream(id, mediaSourceId, true, cancellationToken); } private string GetItemExternalId(BaseItem item) @@ -308,7 +308,7 @@ namespace Emby.Server.Implementations.LiveTv return _services.FirstOrDefault(i => string.Equals(i.Name, name, StringComparison.OrdinalIgnoreCase)); } - private async Task<Tuple<MediaSourceInfo, IDirectStreamProvider>> GetLiveStream(string id, string mediaSourceId, bool isChannel, CancellationToken cancellationToken) + private async Task<Tuple<MediaSourceInfo, IDirectStreamProvider, bool>> GetLiveStream(string id, string mediaSourceId, bool isChannel, CancellationToken cancellationToken) { if (string.Equals(id, mediaSourceId, StringComparison.OrdinalIgnoreCase)) { @@ -319,6 +319,7 @@ namespace Emby.Server.Implementations.LiveTv bool isVideo; ILiveTvService service; IDirectStreamProvider directStreamProvider = null; + var assumeInterlaced = false; if (isChannel) { @@ -367,7 +368,12 @@ namespace Emby.Server.Implementations.LiveTv Normalize(info, service, isVideo); - return new Tuple<MediaSourceInfo, IDirectStreamProvider>(info, directStreamProvider); + if (!(service is EmbyTV.EmbyTV)) + { + assumeInterlaced = true; + } + + return new Tuple<MediaSourceInfo, IDirectStreamProvider, bool>(info, directStreamProvider, assumeInterlaced); } private void Normalize(MediaSourceInfo mediaSource, ILiveTvService service, bool isVideo) diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs index 747e0fdd3..e25e28484 100644 --- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs +++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs @@ -126,12 +126,14 @@ namespace Emby.Server.Implementations.LiveTv var keys = openToken.Split(new[] { StreamIdDelimeter }, 3); var mediaSourceId = keys.Length >= 3 ? keys[2] : null; IDirectStreamProvider directStreamProvider = null; + var assumeInterlaced = false; if (string.Equals(keys[0], typeof(LiveTvChannel).Name, StringComparison.OrdinalIgnoreCase)) { var info = await _liveTvManager.GetChannelStream(keys[1], mediaSourceId, cancellationToken).ConfigureAwait(false); stream = info.Item1; directStreamProvider = info.Item2; + assumeInterlaced = info.Item3; } else { @@ -146,7 +148,7 @@ namespace Emby.Server.Implementations.LiveTv } else { - await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, cancellationToken).ConfigureAwait(false); + await new LiveStreamHelper(_mediaEncoder, _logger).AddMediaInfoWithProbe(stream, isAudio, assumeInterlaced, cancellationToken).ConfigureAwait(false); } } catch (Exception ex) |
