diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj
index e9911a12d9..6cda8b5d05 100644
--- a/Emby.Drawing/Emby.Drawing.csproj
+++ b/Emby.Drawing/Emby.Drawing.csproj
@@ -37,7 +37,7 @@
False
- ..\packages\ImageMagickSharp.1.0.0.16\lib\net45\ImageMagickSharp.dll
+ ..\packages\ImageMagickSharp.1.0.0.17\lib\net45\ImageMagickSharp.dll
..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll
diff --git a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs
index ed0760ee33..c5ba6d9c85 100644
--- a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs
+++ b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs
@@ -9,6 +9,7 @@ using System;
using System.IO;
using System.Linq;
using CommonIO;
+using MediaBrowser.Controller.Configuration;
namespace Emby.Drawing.ImageMagick
{
@@ -18,13 +19,15 @@ namespace Emby.Drawing.ImageMagick
private readonly IApplicationPaths _appPaths;
private readonly IHttpClient _httpClient;
private readonly IFileSystem _fileSystem;
+ private readonly IServerConfigurationManager _config;
- public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths, IHttpClient httpClient, IFileSystem fileSystem)
+ public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths, IHttpClient httpClient, IFileSystem fileSystem, IServerConfigurationManager config)
{
_logger = logger;
_appPaths = appPaths;
_httpClient = httpClient;
_fileSystem = fileSystem;
+ _config = config;
LogVersion();
}
@@ -137,11 +140,12 @@ namespace Emby.Drawing.ImageMagick
{
using (var originalImage = new MagickWand(inputPath))
{
- originalImage.CurrentImage.ResizeImage(width, height);
+ ScaleImage(originalImage, width, height);
DrawIndicator(originalImage, width, height, options);
originalImage.CurrentImage.CompressionQuality = quality;
+ originalImage.CurrentImage.StripImage();
originalImage.SaveImage(outputPath);
}
@@ -152,12 +156,13 @@ namespace Emby.Drawing.ImageMagick
{
using (var originalImage = new MagickWand(inputPath))
{
- originalImage.CurrentImage.ResizeImage(width, height);
+ ScaleImage(originalImage, width, height);
wand.CurrentImage.CompositeImage(originalImage, CompositeOperator.OverCompositeOp, 0, 0);
DrawIndicator(wand, width, height, options);
wand.CurrentImage.CompressionQuality = quality;
+ wand.CurrentImage.StripImage();
wand.SaveImage(outputPath);
}
@@ -166,6 +171,18 @@ namespace Emby.Drawing.ImageMagick
SaveDelay();
}
+ private void ScaleImage(MagickWand wand, int width, int height)
+ {
+ if (_config.Configuration.EnableHighQualityImageScaling)
+ {
+ wand.CurrentImage.ResizeImage(width, height);
+ }
+ else
+ {
+ wand.CurrentImage.ScaleImage(width, height);
+ }
+ }
+
///
/// Draws the indicator.
///
diff --git a/Emby.Drawing/packages.config b/Emby.Drawing/packages.config
index 0fcdc278e3..3b8dbcab7c 100644
--- a/Emby.Drawing/packages.config
+++ b/Emby.Drawing/packages.config
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
index d857e58b68..8615d4f8bb 100644
--- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
+++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
@@ -53,7 +53,7 @@
False
- ..\packages\NLog.4.1.1\lib\net45\NLog.dll
+ ..\packages\NLog.4.2.0\lib\net45\NLog.dll
..\packages\Patterns.Logging.1.0.0.2\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.Logging.dll
@@ -62,9 +62,9 @@
False
..\ThirdParty\SharpCompress\SharpCompress.dll
-
+
False
- ..\packages\SimpleInjector.3.0.5\lib\net45\SimpleInjector.dll
+ ..\packages\SimpleInjector.3.1.0\lib\net45\SimpleInjector.dll
diff --git a/MediaBrowser.Common.Implementations/packages.config b/MediaBrowser.Common.Implementations/packages.config
index a0711a9c75..769a7c4f6a 100644
--- a/MediaBrowser.Common.Implementations/packages.config
+++ b/MediaBrowser.Common.Implementations/packages.config
@@ -1,7 +1,7 @@
-
+
-
+
diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs
index 43b980c20d..6feffc3ef7 100644
--- a/MediaBrowser.Controller/Entities/Audio/Audio.cs
+++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs
@@ -27,9 +27,22 @@ namespace MediaBrowser.Controller.Entities.Audio
public long? Size { get; set; }
public string Container { get; set; }
public int? TotalBitrate { get; set; }
- public List Tags { get; set; }
public ExtraType? ExtraType { get; set; }
+ ///
+ /// Gets or sets the artist.
+ ///
+ /// The artist.
+ public List Artists { get; set; }
+
+ public List AlbumArtists { get; set; }
+
+ ///
+ /// Gets or sets the album.
+ ///
+ /// The album.
+ public string Album { get; set; }
+
[IgnoreDataMember]
public bool IsThemeMedia
{
@@ -43,7 +56,6 @@ namespace MediaBrowser.Controller.Entities.Audio
{
Artists = new List();
AlbumArtists = new List();
- Tags = new List();
}
[IgnoreDataMember]
@@ -92,14 +104,6 @@ namespace MediaBrowser.Controller.Entities.Audio
locationType != LocationType.Virtual;
}
- ///
- /// Gets or sets the artist.
- ///
- /// The artist.
- public List Artists { get; set; }
-
- public List AlbumArtists { get; set; }
-
[IgnoreDataMember]
public List AllArtists
{
@@ -114,12 +118,6 @@ namespace MediaBrowser.Controller.Entities.Audio
}
}
- ///
- /// Gets or sets the album.
- ///
- /// The album.
- public string Album { get; set; }
-
[IgnoreDataMember]
public MusicAlbum AlbumEntity
{
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index e9a29cb7a9..19d5576c68 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -34,6 +34,7 @@ namespace MediaBrowser.Controller.Entities
{
protected BaseItem()
{
+ Tags = new List();
Genres = new List();
Studios = new List();
ProviderIds = new Dictionary(StringComparer.OrdinalIgnoreCase);
@@ -625,6 +626,12 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
public List Genres { get; set; }
+ ///
+ /// Gets or sets the tags.
+ ///
+ /// The tags.
+ public List Tags { get; set; }
+
///
/// Gets or sets the home page URL.
///
diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs
index d31675baf6..8342c1c103 100644
--- a/MediaBrowser.Controller/Entities/Book.cs
+++ b/MediaBrowser.Controller/Entities/Book.cs
@@ -17,19 +17,8 @@ namespace MediaBrowser.Controller.Entities
}
}
- ///
- /// Gets or sets the tags.
- ///
- /// The tags.
- public List Tags { get; set; }
-
public string SeriesName { get; set; }
- public Book()
- {
- Tags = new List();
- }
-
public override bool CanDownload()
{
var locationType = LocationType;
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 05965e1b5a..fcbe54d054 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -28,7 +28,6 @@ namespace MediaBrowser.Controller.Entities
public List ThemeSongIds { get; set; }
public List ThemeVideoIds { get; set; }
- public List Tags { get; set; }
public Folder()
{
@@ -36,7 +35,6 @@ namespace MediaBrowser.Controller.Entities
ThemeSongIds = new List();
ThemeVideoIds = new List();
- Tags = new List();
}
[IgnoreDataMember]
diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs
index ed3e85d586..ea518ce358 100644
--- a/MediaBrowser.Controller/Entities/Game.cs
+++ b/MediaBrowser.Controller/Entities/Game.cs
@@ -21,7 +21,6 @@ namespace MediaBrowser.Controller.Entities
RemoteTrailerIds = new List();
ThemeSongIds = new List();
ThemeVideoIds = new List();
- Tags = new List();
}
public List LocalTrailerIds { get; set; }
@@ -34,12 +33,6 @@ namespace MediaBrowser.Controller.Entities
locationType != LocationType.Virtual;
}
- ///
- /// Gets or sets the tags.
- ///
- /// The tags.
- public List Tags { get; set; }
-
///
/// Gets or sets the remote trailers.
///
diff --git a/MediaBrowser.Controller/Entities/Photo.cs b/MediaBrowser.Controller/Entities/Photo.cs
index a3d8921814..6c2f2a3266 100644
--- a/MediaBrowser.Controller/Entities/Photo.cs
+++ b/MediaBrowser.Controller/Entities/Photo.cs
@@ -9,12 +9,10 @@ namespace MediaBrowser.Controller.Entities
{
public class Photo : BaseItem, IHasTags, IHasTaglines
{
- public List Tags { get; set; }
public List Taglines { get; set; }
public Photo()
{
- Tags = new List();
Taglines = new List();
}
diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs
index 822f305ede..a55527f37b 100644
--- a/MediaBrowser.Controller/Entities/Studio.cs
+++ b/MediaBrowser.Controller/Entities/Studio.cs
@@ -10,13 +10,6 @@ namespace MediaBrowser.Controller.Entities
///
public class Studio : BaseItem, IItemByName, IHasTags
{
- public List Tags { get; set; }
-
- public Studio()
- {
- Tags = new List();
- }
-
///
/// Gets the user data key.
///
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 8beee79bf5..62d1bc7a13 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -185,12 +185,6 @@ namespace MediaBrowser.Controller.Entities
public bool IsShortcut { get; set; }
public string ShortcutPath { get; set; }
- ///
- /// Gets or sets the tags.
- ///
- /// The tags.
- public List Tags { get; set; }
-
///
/// Gets or sets the video bit rate.
///
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index e4b52fd994..96a3743d07 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -49,6 +49,12 @@ namespace MediaBrowser.Controller.LiveTv
/// The audio.
public ProgramAudio? Audio { get; set; }
+ ///
+ /// Gets or sets the name of the service.
+ ///
+ /// The name of the service.
+ public string ServiceName { get; set; }
+
///
/// Gets or sets a value indicating whether this instance is repeat.
///
@@ -63,12 +69,6 @@ namespace MediaBrowser.Controller.LiveTv
[IgnoreDataMember]
public string EpisodeTitle { get; set; }
- ///
- /// Gets or sets the name of the service.
- ///
- /// The name of the service.
- public string ServiceName { get; set; }
-
///
/// Gets or sets a value indicating whether this instance is movie.
///
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index dfcafa32d8..e4c4e47625 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -62,6 +62,12 @@ namespace MediaBrowser.Model.Configuration
/// true if this instance is port authorized; otherwise, false.
public bool IsPortAuthorized { get; set; }
+ ///
+ /// Gets or sets a value indicating whether [enable high quality image scaling].
+ ///
+ /// true if [enable high quality image scaling]; otherwise, false.
+ public bool EnableHighQualityImageScaling { get; set; }
+
///
/// Gets or sets the item by name path.
///
@@ -92,18 +98,18 @@ namespace MediaBrowser.Model.Configuration
/// true if [enable localized guids]; otherwise, false.
public bool EnableLocalizedGuids { get; set; }
- ///
- /// Gets or sets a value indicating whether [disable startup scan].
- ///
- /// true if [disable startup scan]; otherwise, false.
- public bool DisableStartupScan { get; set; }
-
///
/// Gets or sets a value indicating whether [enable user views].
///
/// true if [enable user views]; otherwise, false.
public bool EnableUserViews { get; set; }
+ ///
+ /// Gets or sets a value indicating whether [disable startup scan].
+ ///
+ /// true if [disable startup scan]; otherwise, false.
+ public bool DisableStartupScan { get; set; }
+
///
/// Gets or sets a value indicating whether [enable library metadata sub folder].
///
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index a5e7817612..256b057d94 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -201,7 +201,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(_logger, "TypedBaseItems", "DateLastSaved", "DATETIME");
_connection.AddColumn(_logger, "TypedBaseItems", "IsInMixedFolder", "BIT");
_connection.AddColumn(_logger, "TypedBaseItems", "LockedFields", "Text");
-
+ _connection.AddColumn(_logger, "TypedBaseItems", "Studios", "Text");
+
PrepareStatements();
new MediaStreamColumns(_connection, _logger).AddColumns();
@@ -401,7 +402,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"DateLastRefreshed",
"DateLastSaved",
"IsInMixedFolder",
- "LockedFields"
+ "LockedFields",
+ "Studios"
};
_saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@@ -633,7 +635,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.DateLastSaved;
_saveItemCommand.GetParameter(index++).Value = item.IsInMixedFolder;
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.LockedFields.Select(i => i.ToString()).ToArray());
-
+ _saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Studios.ToArray());
+
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index aeafc1ede2..97a457a1b6 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -573,7 +573,7 @@ namespace MediaBrowser.Server.Startup.Common
{
try
{
- return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths, HttpClient, FileSystemManager);
+ return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths, HttpClient, FileSystemManager, ServerConfigurationManager);
}
catch (Exception ex)
{
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index 3b4b52af3e..ee7d782eb0 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -64,8 +64,9 @@
False
..\packages\CommonIO.1.0.0.5\lib\net45\CommonIO.dll
-
- ..\packages\ImageMagickSharp.1.0.0.16\lib\net45\ImageMagickSharp.dll
+
+ False
+ ..\packages\ImageMagickSharp.1.0.0.17\lib\net45\ImageMagickSharp.dll
..\packages\MediaBrowser.IsoMounting.3.0.69\lib\net45\MediaBrowser.IsoMounter.dll
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index dec8199cc2..3ea97a30e6 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -1,7 +1,7 @@
-
+