aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2015-04-15 00:11:51 -0400
committerLuke <luke.pulverenti@gmail.com>2015-04-15 00:11:51 -0400
commit9b451f9095c61858347072e1651fcd9c327fc59d (patch)
tree9ae870940fff6c4ea01de19f4268f39da265935f
parentad6e7485b2498d6b60b8f1ce19cbfd7a44443b7b (diff)
parentc9b11c309d08aa27113e085ce323077fc38b98a0 (diff)
Merge pull request #1080 from MediaBrowser/dev
3.0.5582.1
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs96
-rw-r--r--MediaBrowser.Controller/Channels/Channel.cs16
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs17
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj7
-rw-r--r--MediaBrowser.Controller/Sync/IServerSyncProvider.cs2
-rw-r--r--MediaBrowser.Controller/packages.config2
-rw-r--r--MediaBrowser.Model/Configuration/EncodingOptions.cs2
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs27
-rw-r--r--MediaBrowser.Model/Entities/MediaStream.cs6
-rw-r--r--MediaBrowser.Model/Session/ClientCapabilities.cs4
-rw-r--r--MediaBrowser.Model/Users/UserPolicy.cs9
-rw-r--r--MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs9
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj7
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs112
-rw-r--r--MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sync/CloudSyncProfile.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MediaSync.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sync/TargetDataProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/packages.config2
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec6
-rw-r--r--SharedVersion.cs2
25 files changed, 110 insertions, 236 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 827aed4f2d..520c3b9dc7 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<int>();
- 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<Tuple<int, int>>();
-
- 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<int, int>(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<int> PredictStreamCopySegments(List<int> intervals, int idealMs)
- {
- var segments = new List<int>();
- 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 f746d87fff..f0328a1d88 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 61e5acdb3f..975f3e3947 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 b9a161a9f2..199f5e0d1f 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -48,14 +48,13 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Interfaces.IO">
+ <HintPath>..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll</HintPath>
+ </Reference>
<Reference Include="MoreLinq, Version=1.1.17511.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll</HintPath>
</Reference>
- <Reference Include="Patterns.IO, Version=1.0.5580.36861, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll</HintPath>
- </Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs
index 6b694d26d9..2635a4cbf9 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 8d10de2f1b..8846b5a064 100644
--- a/MediaBrowser.Controller/packages.config
+++ b/MediaBrowser.Controller/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
<package id="morelinq" version="1.1.0" targetFramework="net45" />
- <package id="Patterns.IO" version="1.0.0.3" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs
index afd67eb153..c44a7c94d2 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 daeb50225a..02f77899f6 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 11eb31c27b..f842a9e3a0 100644
--- a/MediaBrowser.Model/Entities/MediaStream.cs
+++ b/MediaBrowser.Model/Entities/MediaStream.cs
@@ -58,12 +58,6 @@ namespace MediaBrowser.Model.Entities
/// </summary>
/// <value>The length of the packet.</value>
public int? PacketLength { get; set; }
-
- /// <summary>
- /// Gets or sets the key frames.
- /// </summary>
- /// <value>The key frames.</value>
- public List<int> KeyFrames { get; set; }
/// <summary>
/// Gets or sets the channels.
diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs
index 095ad472a2..019eb38417 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<string> 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 05c1b9de5a..b3040d6f8c 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 6e57ddb01c..f133f74db4 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 3f164ee6f5..d704277c14 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 a6e49ea8c6..3dc0105651 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -45,6 +45,9 @@
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Interfaces.IO">
+ <HintPath>..\packages\Interfaces.IO.1.0.0.5\lib\portable-net45+sl4+wp71+win8+wpa81\Interfaces.IO.dll</HintPath>
+ </Reference>
<Reference Include="MediaBrowser.Naming, Version=1.0.5509.27636, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\MediaBrowser.Naming.1.0.0.32\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath>
@@ -57,10 +60,6 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll</HintPath>
</Reference>
- <Reference Include="Patterns.IO, Version=1.0.5580.36861, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll</HintPath>
- </Reference>
<Reference Include="Patterns.Logging">
<HintPath>..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll</HintPath>
<Private>True</Private>
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteMediaStreamsRepository.cs
index 76c1274b24..293da3f0f9 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;
-
- _saveStreamCommand.GetParameter(9).Value = stream.IsInterlaced;
-
- _saveStreamCommand.GetParameter(10).Value = stream.BitRate;
- _saveStreamCommand.GetParameter(11).Value = stream.Channels;
- _saveStreamCommand.GetParameter(12).Value = stream.SampleRate;
-
- _saveStreamCommand.GetParameter(13).Value = stream.IsDefault;
- _saveStreamCommand.GetParameter(14).Value = stream.IsForced;
- _saveStreamCommand.GetParameter(15).Value = stream.IsExternal;
-
- _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;
+ var index = 0;
+
+ _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(index++).Value = stream.IsInterlaced;
+
+ _saveStreamCommand.GetParameter(index++).Value = stream.BitRate;
+ _saveStreamCommand.GetParameter(index++).Value = stream.Channels;
+ _saveStreamCommand.GetParameter(index++).Value = stream.SampleRate;
+
+ _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 eda4d8cc1d..c684874408 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<List<BaseItem>> 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 f881a2055c..90135acfeb 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 1a8b55a257..96e996ff12 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 dc95ee316d..676adad342 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 f374cbea15..07c6ccacc2 100644
--- a/MediaBrowser.Server.Implementations/packages.config
+++ b/MediaBrowser.Server.Implementations/packages.config
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
+ <package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
<package id="MediaBrowser.Naming" version="1.0.0.32" targetFramework="net45" />
<package id="Mono.Nat" version="1.2.23.0" targetFramework="net45" />
<package id="morelinq" version="1.1.0" targetFramework="net45" />
- <package id="Patterns.IO" version="1.0.0.3" targetFramework="net45" />
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
<package id="SocketHttpListener" version="1.0.0.4" targetFramework="net45" />
</packages> \ No newline at end of file
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 029e13b683..f3f5bbd8c4 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.619</version>
+ <version>3.0.620</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Emby 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.619" />
+ <dependency id="MediaBrowser.Common" version="3.0.620" />
<dependency id="NLog" version="3.2.0.0" />
<dependency id="SimpleInjector" version="2.7.0" />
</dependencies>
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index f2c9f87fa2..9804371d7d 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.619</version>
+ <version>3.0.620</version>
<title>MediaBrowser.Common</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec
index 9d14d3a0ba..8a47ff07a8 100644
--- a/Nuget/MediaBrowser.Model.Signed.nuspec
+++ b/Nuget/MediaBrowser.Model.Signed.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Model.Signed</id>
- <version>3.0.619</version>
+ <version>3.0.620</version>
<title>MediaBrowser.Model - Signed Edition</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 35163a659e..fbe9e66c6f 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.619</version>
+ <version>3.0.620</version>
<title>Media Browser.Server.Core</title>
<authors>Emby Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,8 +12,8 @@
<description>Contains core components required to build plugins for Emby Server.</description>
<copyright>Copyright © Emby 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.619" />
- <dependency id="Patterns.IO" version="1.0.0.3" />
+ <dependency id="MediaBrowser.Common" version="3.0.620" />
+ <dependency id="Interfaces.IO" version="1.0.0.5" />
</dependencies>
</metadata>
<files>
diff --git a/SharedVersion.cs b/SharedVersion.cs
index c2890cb34b..75ef623e94 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")]