diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 827aed4f2..520c3b9dc 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1709,102 +1709,6 @@ namespace MediaBrowser.Api.Playback { state.OutputAudioCodec = "copy"; } - - if (string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase) && TranscodingJobType == TranscodingJobType.Hls) - { - var segmentLength = GetSegmentLength(state); - if (segmentLength.HasValue) - { - state.SegmentLength = segmentLength.Value; - } - } - } - - private int? GetSegmentLength(StreamState state) - { - var stream = state.VideoStream; - - if (stream == null) - { - return null; - } - - var frames = stream.KeyFrames; - - if (frames == null || frames.Count < 2) - { - return null; - } - - Logger.Debug("Found keyframes at {0}", string.Join(",", frames.ToArray())); - - var intervals = new List(); - for (var i = 1; i < frames.Count; i++) - { - var start = frames[i - 1]; - var end = frames[i]; - intervals.Add(end - start); - } - - Logger.Debug("Found keyframes intervals {0}", string.Join(",", intervals.ToArray())); - - var results = new List>(); - - for (var i = 1; i <= 10; i++) - { - var idealMs = i*1000; - - if (intervals.Max() < idealMs - 1000) - { - break; - } - - var segments = PredictStreamCopySegments(intervals, idealMs); - var variance = segments.Select(s => Math.Abs(idealMs - s)).Sum(); - - results.Add(new Tuple(i, variance)); - } - - if (results.Count == 0) - { - return null; - } - - return results.OrderBy(i => i.Item2).ThenBy(i => i.Item1).Select(i => i.Item1).First(); - } - - private List PredictStreamCopySegments(List intervals, int idealMs) - { - var segments = new List(); - var currentLength = 0; - - foreach (var interval in intervals) - { - if (currentLength == 0 || (currentLength + interval) <= idealMs) - { - currentLength += interval; - } - - else - { - // The segment will either be above or below the ideal. - // Need to figure out which is preferable - var offset1 = Math.Abs(idealMs - currentLength); - var offset2 = Math.Abs(idealMs - (currentLength + interval)); - - if (offset1 <= offset2) - { - segments.Add(currentLength); - currentLength = interval; - } - else - { - currentLength += interval; - } - } - } - Logger.Debug("Predicted actual segment lengths for length {0}: {1}", idealMs, string.Join(",", segments.ToArray())); - return segments; } private void AttachMediaSourceInfo(StreamState state, diff --git a/MediaBrowser.Controller/Channels/Channel.cs b/MediaBrowser.Controller/Channels/Channel.cs index f746d87ff..f0328a1d8 100644 --- a/MediaBrowser.Controller/Channels/Channel.cs +++ b/MediaBrowser.Controller/Channels/Channel.cs @@ -14,11 +14,21 @@ namespace MediaBrowser.Controller.Channels public override bool IsVisible(User user) { - if (!user.Policy.EnableAllChannels && !user.Policy.EnabledChannels.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + if (user.Policy.BlockedChannels != null) { - return false; + if (user.Policy.BlockedChannels.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + { + return false; + } } - + else + { + if (!user.Policy.EnableAllChannels && !user.Policy.EnabledChannels.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + return base.IsVisible(user); } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 61e5acdb3..975f3e394 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -334,9 +334,22 @@ namespace MediaBrowser.Controller.Entities { if (this is ICollectionFolder && !(this is BasePluginFolder)) { - if (!user.Policy.EnableAllFolders && !user.Policy.EnabledFolders.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + if (user.Policy.BlockedMediaFolders != null) { - return false; + if (user.Policy.BlockedMediaFolders.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase) || + + // Backwards compatibility + user.Policy.BlockedMediaFolders.Contains(Name, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + } + else + { + if (!user.Policy.EnableAllFolders && !user.Policy.EnabledFolders.Contains(Id.ToString("N"), StringComparer.OrdinalIgnoreCase)) + { + return false; + } } } diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index b9a161a9f..199f5e0d1 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -48,14 +48,13 @@ v4.5 + + ..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll + False ..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll - - False - ..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll - diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs index 6b694d26d..2635a4cbf 100644 --- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs +++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs @@ -1,6 +1,6 @@ using MediaBrowser.Model.Querying; using MediaBrowser.Model.Sync; -using Patterns.IO; +using Interfaces.IO; using System; using System.IO; using System.Threading; diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config index 8d10de2f1..8846b5a06 100644 --- a/MediaBrowser.Controller/packages.config +++ b/MediaBrowser.Controller/packages.config @@ -1,5 +1,5 @@  + - \ No newline at end of file diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs index afd67eb15..c44a7c94d 100644 --- a/MediaBrowser.Model/Configuration/EncodingOptions.cs +++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs @@ -17,7 +17,7 @@ namespace MediaBrowser.Model.Configuration DownMixAudioBoost = 2; EncodingQuality = EncodingQuality.Auto; EnableThrottling = true; - ThrottleThresholdSeconds = 120; + ThrottleThresholdSeconds = 90; } } } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index daeb50225..02f77899f 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -564,10 +564,7 @@ namespace MediaBrowser.Model.Dlna { if (!conditionProcessor.IsVideoConditionSatisfied(i, audioBitrate, audioChannels, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isCabac, refFrames, numVideoStreams, numAudioStreams)) { - _logger.Debug("Profile: {0}, DirectPlay=false. Reason=VideoContainerProfile.{1} Path: {2}", - profile.Name ?? "Unknown Profile", - i.Property, - mediaSource.Path ?? "Unknown path"); + LogConditionFailure(profile, "VideoContainerProfile", i, mediaSource); return null; } @@ -600,10 +597,7 @@ namespace MediaBrowser.Model.Dlna { if (!conditionProcessor.IsVideoConditionSatisfied(i, audioBitrate, audioChannels, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isCabac, refFrames, numVideoStreams, numAudioStreams)) { - _logger.Debug("Profile: {0}, DirectPlay=false. Reason=VideoCodecProfile.{1} Path: {2}", - profile.Name ?? "Unknown Profile", - i.Property, - mediaSource.Path ?? "Unknown path"); + LogConditionFailure(profile, "VideoCodecProfile", i, mediaSource); return null; } @@ -639,10 +633,7 @@ namespace MediaBrowser.Model.Dlna bool? isSecondaryAudio = audioStream == null ? null : mediaSource.IsSecondaryAudio(audioStream); if (!conditionProcessor.IsVideoAudioConditionSatisfied(i, audioChannels, audioBitrate, audioProfile, isSecondaryAudio)) { - _logger.Debug("Profile: {0}, DirectPlay=false. Reason=VideoAudioCodecProfile.{1} Path: {2}", - profile.Name ?? "Unknown Profile", - i.Property, - mediaSource.Path ?? "Unknown path"); + LogConditionFailure(profile, "VideoAudioCodecProfile", i, mediaSource); return null; } @@ -679,6 +670,18 @@ namespace MediaBrowser.Model.Dlna return null; } + private void LogConditionFailure(DeviceProfile profile, string type, ProfileCondition condition, MediaSourceInfo mediaSource) + { + _logger.Debug("Profile: {0}, DirectPlay=false. Reason={1}.{2} Condition: {3}. ConditionValue: {4}. IsRequired: {5}. Path: {6}", + type, + profile.Name ?? "Unknown Profile", + condition.Property, + condition.Condition, + condition.Value ?? string.Empty, + condition.IsRequired, + mediaSource.Path ?? "Unknown path"); + } + private bool IsEligibleForDirectPlay(MediaSourceInfo item, int? maxBitrate, MediaStream subtitleStream, diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs index 11eb31c27..f842a9e3a 100644 --- a/MediaBrowser.Model/Entities/MediaStream.cs +++ b/MediaBrowser.Model/Entities/MediaStream.cs @@ -58,12 +58,6 @@ namespace MediaBrowser.Model.Entities /// /// The length of the packet. public int? PacketLength { get; set; } - - /// - /// Gets or sets the key frames. - /// - /// The key frames. - public List KeyFrames { get; set; } /// /// Gets or sets the channels. diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs index 095ad472a..019eb3841 100644 --- a/MediaBrowser.Model/Session/ClientCapabilities.cs +++ b/MediaBrowser.Model/Session/ClientCapabilities.cs @@ -21,8 +21,8 @@ namespace MediaBrowser.Model.Session public DeviceProfile DeviceProfile { get; set; } public List SupportedLiveMediaTypes { get; set; } - public string AppUrl { get; set; } - public string AppImageUrl { get; set; } + public string Url { get; set; } + public string ImageUrl { get; set; } public ClientCapabilities() { diff --git a/MediaBrowser.Model/Users/UserPolicy.cs b/MediaBrowser.Model/Users/UserPolicy.cs index 05c1b9de5..b3040d6f8 100644 --- a/MediaBrowser.Model/Users/UserPolicy.cs +++ b/MediaBrowser.Model/Users/UserPolicy.cs @@ -41,7 +41,7 @@ namespace MediaBrowser.Model.Users public bool EnableMediaPlayback { get; set; } public bool EnableAudioPlaybackTranscoding { get; set; } public bool EnableVideoPlaybackTranscoding { get; set; } - + public bool EnableContentDeletion { get; set; } public bool EnableContentDownloading { get; set; } @@ -64,7 +64,10 @@ namespace MediaBrowser.Model.Users public int InvalidLoginAttemptCount { get; set; } public bool EnablePublicSharing { get; set; } - + + public string[] BlockedMediaFolders { get; set; } + public string[] BlockedChannels { get; set; } + public UserPolicy() { EnableSync = true; @@ -73,7 +76,7 @@ namespace MediaBrowser.Model.Users EnableMediaPlayback = true; EnableAudioPlaybackTranscoding = true; EnableVideoPlaybackTranscoding = true; - + EnableLiveTvManagement = true; EnableLiveTvAccess = true; diff --git a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs index 6e57ddb01..f133f74db 100644 --- a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs +++ b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs @@ -6,6 +6,7 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Providers.Music; +using MediaBrowser.Providers.TV; using System; using System.Collections.Generic; using System.Globalization; @@ -14,7 +15,6 @@ using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Providers.TV; namespace MediaBrowser.Providers.Movies { diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 3f164ee6f..d704277c1 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -1007,12 +1007,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv innerProgress.RegisterAction(p => progress.Report(90 + (p * .1))); await CleanDatabaseInternal(progress, cancellationToken).ConfigureAwait(false); - foreach (var program in _programs.Values - .Where(i => (i.StartDate - DateTime.UtcNow).TotalDays <= 1) - .ToList()) - { - RefreshIfNeeded(program); - } + RefreshIfNeeded(_programs.Values.Where(i => (i.StartDate - DateTime.UtcNow).TotalDays <= 1).ToList()); } finally { @@ -1145,8 +1140,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv _refreshedPrograms.Clear(); progress.Report(90); - RefreshIfNeeded(programs.Take(500)); - // Load these now which will prefetch metadata var dtoOptions = new DtoOptions(); dtoOptions.Fields.Remove(ItemFields.SyncInfo); diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index a6e49ea8c..3dc010565 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -45,6 +45,9 @@ v4.5 + + ..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll + False ..\packages\MediaBrowser.Naming.1.0.0.32\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll @@ -57,10 +60,6 @@ False ..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll - - False - ..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll - ..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll True diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs index 76c1274b2..293da3f0f 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs @@ -41,7 +41,7 @@ namespace MediaBrowser.Server.Implementations.Persistence // Add PixelFormat column - createTableCommand += "(ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, IsCabac BIT NULL, KeyFrames TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))"; + createTableCommand += "(ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, IsCabac BIT NULL, PRIMARY KEY (ItemId, StreamIndex))"; string[] queries = { @@ -62,7 +62,6 @@ namespace MediaBrowser.Server.Implementations.Persistence AddIsAnamorphicColumn(); AddIsCabacColumn(); AddRefFramesCommand(); - AddKeyFramesCommand(); PrepareStatements(); @@ -162,37 +161,6 @@ namespace MediaBrowser.Server.Implementations.Persistence _connection.RunQueries(new[] { builder.ToString() }, _logger); } - private void AddKeyFramesCommand() - { - using (var cmd = _connection.CreateCommand()) - { - cmd.CommandText = "PRAGMA table_info(mediastreams)"; - - using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) - { - while (reader.Read()) - { - if (!reader.IsDBNull(1)) - { - var name = reader.GetString(1); - - if (string.Equals(name, "KeyFrames", StringComparison.OrdinalIgnoreCase)) - { - return; - } - } - } - } - } - - var builder = new StringBuilder(); - - builder.AppendLine("alter table mediastreams"); - builder.AppendLine("add column KeyFrames TEXT NULL"); - - _connection.RunQueries(new[] { builder.ToString() }, _logger); - } - private void AddIsCabacColumn() { using (var cmd = _connection.CreateCommand()) @@ -282,7 +250,6 @@ namespace MediaBrowser.Server.Implementations.Persistence "BitDepth", "IsAnamorphic", "RefFrames", - "KeyFrames", "IsCabac" }; @@ -464,12 +431,7 @@ namespace MediaBrowser.Server.Implementations.Persistence if (!reader.IsDBNull(25)) { - item.KeyFrames = reader.GetString(25).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => int.Parse(i, CultureInfo.InvariantCulture)).ToList(); - } - - if (!reader.IsDBNull(26)) - { - item.IsCabac = reader.GetBoolean(26); + item.IsCabac = reader.GetBoolean(25); } return item; @@ -508,44 +470,38 @@ namespace MediaBrowser.Server.Implementations.Persistence { cancellationToken.ThrowIfCancellationRequested(); - _saveStreamCommand.GetParameter(0).Value = id; - _saveStreamCommand.GetParameter(1).Value = stream.Index; - _saveStreamCommand.GetParameter(2).Value = stream.Type.ToString(); - _saveStreamCommand.GetParameter(3).Value = stream.Codec; - _saveStreamCommand.GetParameter(4).Value = stream.Language; - _saveStreamCommand.GetParameter(5).Value = stream.ChannelLayout; - _saveStreamCommand.GetParameter(6).Value = stream.Profile; - _saveStreamCommand.GetParameter(7).Value = stream.AspectRatio; - _saveStreamCommand.GetParameter(8).Value = stream.Path; + var index = 0; - _saveStreamCommand.GetParameter(9).Value = stream.IsInterlaced; + _saveStreamCommand.GetParameter(index++).Value = id; + _saveStreamCommand.GetParameter(index++).Value = stream.Index; + _saveStreamCommand.GetParameter(index++).Value = stream.Type.ToString(); + _saveStreamCommand.GetParameter(index++).Value = stream.Codec; + _saveStreamCommand.GetParameter(index++).Value = stream.Language; + _saveStreamCommand.GetParameter(index++).Value = stream.ChannelLayout; + _saveStreamCommand.GetParameter(index++).Value = stream.Profile; + _saveStreamCommand.GetParameter(index++).Value = stream.AspectRatio; + _saveStreamCommand.GetParameter(index++).Value = stream.Path; - _saveStreamCommand.GetParameter(10).Value = stream.BitRate; - _saveStreamCommand.GetParameter(11).Value = stream.Channels; - _saveStreamCommand.GetParameter(12).Value = stream.SampleRate; + _saveStreamCommand.GetParameter(index++).Value = stream.IsInterlaced; - _saveStreamCommand.GetParameter(13).Value = stream.IsDefault; - _saveStreamCommand.GetParameter(14).Value = stream.IsForced; - _saveStreamCommand.GetParameter(15).Value = stream.IsExternal; + _saveStreamCommand.GetParameter(index++).Value = stream.BitRate; + _saveStreamCommand.GetParameter(index++).Value = stream.Channels; + _saveStreamCommand.GetParameter(index++).Value = stream.SampleRate; - _saveStreamCommand.GetParameter(16).Value = stream.Width; - _saveStreamCommand.GetParameter(17).Value = stream.Height; - _saveStreamCommand.GetParameter(18).Value = stream.AverageFrameRate; - _saveStreamCommand.GetParameter(19).Value = stream.RealFrameRate; - _saveStreamCommand.GetParameter(20).Value = stream.Level; - _saveStreamCommand.GetParameter(21).Value = stream.PixelFormat; - _saveStreamCommand.GetParameter(22).Value = stream.BitDepth; - _saveStreamCommand.GetParameter(23).Value = stream.IsAnamorphic; - _saveStreamCommand.GetParameter(24).Value = stream.RefFrames; - if (stream.KeyFrames != null) - { - _saveStreamCommand.GetParameter(25).Value = string.Join(",", stream.KeyFrames.Select(i => i.ToString(CultureInfo.InvariantCulture)).ToArray()); - } - else - { - _saveStreamCommand.GetParameter(25).Value = null; - } - _saveStreamCommand.GetParameter(26).Value = stream.IsCabac; + _saveStreamCommand.GetParameter(index++).Value = stream.IsDefault; + _saveStreamCommand.GetParameter(index++).Value = stream.IsForced; + _saveStreamCommand.GetParameter(index++).Value = stream.IsExternal; + + _saveStreamCommand.GetParameter(index++).Value = stream.Width; + _saveStreamCommand.GetParameter(index++).Value = stream.Height; + _saveStreamCommand.GetParameter(index++).Value = stream.AverageFrameRate; + _saveStreamCommand.GetParameter(index++).Value = stream.RealFrameRate; + _saveStreamCommand.GetParameter(index++).Value = stream.Level; + _saveStreamCommand.GetParameter(index++).Value = stream.PixelFormat; + _saveStreamCommand.GetParameter(index++).Value = stream.BitDepth; + _saveStreamCommand.GetParameter(index++).Value = stream.IsAnamorphic; + _saveStreamCommand.GetParameter(index++).Value = stream.RefFrames; + _saveStreamCommand.GetParameter(index++).Value = stream.IsCabac; _saveStreamCommand.Transaction = transaction; _saveStreamCommand.ExecuteNonQuery(); diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs index eda4d8cc1..c68487440 100644 --- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs +++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs @@ -18,7 +18,7 @@ namespace MediaBrowser.Server.Implementations.Photos protected override Task> GetItemsWithImages(IHasImages item) { var photoAlbum = (PhotoAlbum)item; - var items = GetFinalItems(photoAlbum.GetRecursiveChildren().ToList()); + var items = GetFinalItems(photoAlbum.Children.ToList()); return Task.FromResult(items); } diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs index f881a2055..90135acfe 100644 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs @@ -206,7 +206,7 @@ namespace MediaBrowser.Server.Implementations.Sync Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "5", - IsRequired = true + IsRequired = false }, new ProfileCondition { @@ -220,7 +220,7 @@ namespace MediaBrowser.Server.Implementations.Sync codecProfiles.Add(new CodecProfile { Type = CodecType.VideoAudio, - Codec = "ac3", + Codec = "aac,mp3", Conditions = new[] { new ProfileCondition diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs index 1a8b55a25..96e996ff1 100644 --- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs +++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs @@ -18,7 +18,7 @@ using System.Security.Cryptography; using System.Text; using System.Threading; using System.Threading.Tasks; -using Patterns.IO; +using Interfaces.IO; namespace MediaBrowser.Server.Implementations.Sync { diff --git a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs index dc95ee316..676adad34 100644 --- a/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs @@ -11,7 +11,7 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using Patterns.IO; +using Interfaces.IO; namespace MediaBrowser.Server.Implementations.Sync { diff --git a/MediaBrowser.Server.Implementations/packages.config b/MediaBrowser.Server.Implementations/packages.config index f374cbea1..07c6ccacc 100644 --- a/MediaBrowser.Server.Implementations/packages.config +++ b/MediaBrowser.Server.Implementations/packages.config @@ -1,9 +1,9 @@  + - \ No newline at end of file diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 029e13b68..f3f5bbd8c 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.619 + 3.0.620 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption. Copyright © Emby 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index f2c9f87fa..9804371d7 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.619 + 3.0.620 MediaBrowser.Common Emby Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index 9d14d3a0b..8a47ff07a 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.619 + 3.0.620 MediaBrowser.Model - Signed Edition Emby Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index 35163a659..fbe9e66c6 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.619 + 3.0.620 Media Browser.Server.Core Emby Team ebr,Luke,scottisafool @@ -12,8 +12,8 @@ Contains core components required to build plugins for Emby Server. Copyright © Emby 2013 - - + + diff --git a/SharedVersion.cs b/SharedVersion.cs index c2890cb34..75ef623e9 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; //[assembly: AssemblyVersion("3.0.*")] -[assembly: AssemblyVersion("3.0.5582.0")] +[assembly: AssemblyVersion("3.0.5582.1")]