From ac4023ed47f35a6b90d0689ab205810c5e4acfcf Mon Sep 17 00:00:00 2001 From: softworkz Date: Tue, 23 Aug 2016 03:26:34 +0200 Subject: [PATCH 1/9] Core server preparation for new "TV Maze Provider Plugin" --- MediaBrowser.Controller/Providers/BaseItemXmlParser.cs | 9 +++++++++ MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs | 7 +++++++ MediaBrowser.Model/Entities/MetadataProviders.cs | 3 ++- MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 9 +++++++++ MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs | 6 ++++++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index a783910e3..c0912708c 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -724,6 +724,15 @@ namespace MediaBrowser.Controller.Providers } break; } + case "TvMazeId": + { + var id = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(id)) + { + item.SetProviderId(MetadataProviders.TvMaze, id); + } + break; + } case "AudioDbArtistId": { var id = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs index 2b3f53aeb..d472d4812 100644 --- a/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs +++ b/MediaBrowser.LocalMetadata/Savers/XmlSaverHelpers.cs @@ -553,6 +553,13 @@ namespace MediaBrowser.LocalMetadata.Savers builder.Append("" + SecurityElement.Escape(externalId) + ""); } + externalId = item.GetProviderId(MetadataProviders.TvMaze); + + if (!string.IsNullOrEmpty(externalId)) + { + builder.Append("" + SecurityElement.Escape(externalId) + ""); + } + var hasTagline = item as IHasTaglines; if (hasTagline != null) { diff --git a/MediaBrowser.Model/Entities/MetadataProviders.cs b/MediaBrowser.Model/Entities/MetadataProviders.cs index f5ab0c1d4..1e7bde934 100644 --- a/MediaBrowser.Model/Entities/MetadataProviders.cs +++ b/MediaBrowser.Model/Entities/MetadataProviders.cs @@ -39,6 +39,7 @@ namespace MediaBrowser.Model.Entities TvRage = 15, AudioDbArtist = 16, AudioDbAlbum = 17, - MusicBrainzTrack = 18 + MusicBrainzTrack = 18, + TvMaze = 19 } } diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 0c8501e62..f777ae16b 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -827,6 +827,15 @@ namespace MediaBrowser.XbmcMetadata.Parsers } break; } + case "tvmazeid": + { + var id = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(id)) + { + item.SetProviderId(MetadataProviders.TvMaze, id); + } + break; + } case "audiodbartistid": { var id = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs index 954fb2a47..c28a15a93 100644 --- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs @@ -822,6 +822,12 @@ namespace MediaBrowser.XbmcMetadata.Savers writer.WriteElementString("tvrageid", externalId); } + externalId = item.GetProviderId(MetadataProviders.TvMaze); + if (!string.IsNullOrEmpty(externalId)) + { + writer.WriteElementString("tvmazeid", externalId); + } + if (options.SaveImagePathsInNfo) { AddImages(item, writer, libraryManager, config); From e5d5c67041d38b6137a5a31b1cddf9088f2d2cb0 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 16:14:35 -0400 Subject: [PATCH 2/9] update vaapi defaults --- MediaBrowser.Model/Configuration/EncodingOptions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs index 4ef15604a..3c03dc12a 100644 --- a/MediaBrowser.Model/Configuration/EncodingOptions.cs +++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs @@ -18,6 +18,7 @@ namespace MediaBrowser.Model.Configuration EnableThrottling = true; ThrottleDelaySeconds = 180; EncodingThreadCount = -1; + VaapiDevice = "/dev/dri/card0"; } } } From c46e38725e40171639d6b1fec930081be129a1bc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 16:46:26 -0400 Subject: [PATCH 3/9] support realtime monitor per library --- .../Entities/CollectionFolder.cs | 1 + .../Configuration/LibraryOptions.cs | 3 ++ .../IO/LibraryMonitor.cs | 40 ++++++++++--------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index e120f2e23..597ecf973 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -106,6 +106,7 @@ namespace MediaBrowser.Controller.Entities { LibraryOptions[path] = options; + options.SchemaVersion = 1; XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path)); } } diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index e15df37c1..3fe694553 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -4,10 +4,13 @@ { public bool EnableArchiveMediaFiles { get; set; } public bool EnablePhotos { get; set; } + public bool EnableRealtimeMonitor { get; set; } + public int SchemaVersion { get; set; } public LibraryOptions() { EnablePhotos = true; + EnableRealtimeMonitor = true; } } } diff --git a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs index ea9e58ee4..7ed4dc71e 100644 --- a/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs +++ b/MediaBrowser.Server.Implementations/IO/LibraryMonitor.cs @@ -172,27 +172,29 @@ namespace MediaBrowser.Server.Implementations.IO } } - public void Start() + private bool IsLibraryMonitorEnabaled(BaseItem item) { - if (EnableLibraryMonitor) + var options = LibraryManager.GetLibraryOptions(item); + + if (options != null && options.SchemaVersion >= 1) { - StartInternal(); + return options.EnableRealtimeMonitor; } + + return EnableLibraryMonitor; } - /// - /// Starts this instance. - /// - private void StartInternal() + public void Start() { LibraryManager.ItemAdded += LibraryManager_ItemAdded; LibraryManager.ItemRemoved += LibraryManager_ItemRemoved; - var pathsToWatch = new List { LibraryManager.RootFolder.Path }; + var pathsToWatch = new List { }; var paths = LibraryManager .RootFolder .Children + .Where(IsLibraryMonitorEnabaled) .OfType() .SelectMany(f => f.PhysicalLocations) .Distinct(StringComparer.OrdinalIgnoreCase) @@ -213,6 +215,14 @@ namespace MediaBrowser.Server.Implementations.IO } } + private void StartWatching(BaseItem item) + { + if (IsLibraryMonitorEnabaled(item)) + { + StartWatchingPath(item.Path); + } + } + /// /// Handles the ItemRemoved event of the LibraryManager control. /// @@ -235,7 +245,7 @@ namespace MediaBrowser.Server.Implementations.IO { if (e.Item.GetParent() is AggregateFolder) { - StartWatchingPath(e.Item.Path); + StartWatching(e.Item); } } @@ -382,14 +392,6 @@ namespace MediaBrowser.Server.Implementations.IO Logger.ErrorException("Error in Directory watcher for: " + dw.Path, ex); DisposeWatcher(dw); - - if (ConfigurationManager.Configuration.EnableLibraryMonitor == AutoOnOff.Auto) - { - Logger.Info("Disabling realtime monitor to prevent future instability"); - - ConfigurationManager.Configuration.EnableLibraryMonitor = AutoOnOff.Disabled; - Stop(); - } } /// @@ -420,8 +422,8 @@ namespace MediaBrowser.Server.Implementations.IO var filename = Path.GetFileName(path); - var monitorPath = !string.IsNullOrEmpty(filename) && - !_alwaysIgnoreFiles.Contains(filename, StringComparer.OrdinalIgnoreCase) && + var monitorPath = !string.IsNullOrEmpty(filename) && + !_alwaysIgnoreFiles.Contains(filename, StringComparer.OrdinalIgnoreCase) && !_alwaysIgnoreExtensions.Contains(Path.GetExtension(path) ?? string.Empty, StringComparer.OrdinalIgnoreCase); // Ignore certain files From 0117ee67d8ef5ae1e3b1885b46e4260e0bae60a6 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 17:06:04 -0400 Subject: [PATCH 4/9] resolve 128k limit --- .../Configuration/UserConfiguration.cs | 2 - MediaBrowser.Model/Dlna/StreamBuilder.cs | 13 +++--- .../ApplicationHost.cs | 1 - .../MediaBrowser.Server.Startup.Common.csproj | 1 - .../Migrations/CollectionGroupingMigration.cs | 40 ------------------- 5 files changed, 5 insertions(+), 52 deletions(-) delete mode 100644 MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs index b081e2973..313c5243c 100644 --- a/MediaBrowser.Model/Configuration/UserConfiguration.cs +++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs @@ -27,8 +27,6 @@ namespace MediaBrowser.Model.Configuration public bool DisplayMissingEpisodes { get; set; } public bool DisplayUnairedEpisodes { get; set; } - public bool GroupMoviesIntoBoxSets { get; set; } - public string[] ExcludeFoldersFromGrouping { get; set; } public string[] GroupedFolders { get; set; } diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index f1b3e7bab..d042125b9 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -602,19 +602,16 @@ namespace MediaBrowser.Model.Dlna private int GetAudioBitrate(string subProtocol, int? maxTotalBitrate, int? targetAudioChannels, string targetAudioCodec, MediaStream audioStream) { - var defaultBitrate = 128000; - if (StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3")) + var defaultBitrate = audioStream.BitRate ?? 192000; + // Reduce the bitrate if we're downmixing + if (targetAudioChannels.HasValue && audioStream != null && audioStream.Channels.HasValue && targetAudioChannels.Value < audioStream.Channels.Value) { - defaultBitrate = 192000; - } - if (!string.IsNullOrEmpty(targetAudioCodec) && audioStream != null && StringHelper.EqualsIgnoreCase(audioStream.Codec, targetAudioCodec)) - { - defaultBitrate = audioStream.BitRate ?? defaultBitrate; + defaultBitrate = StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3") ? 192000 : 128000; } if (targetAudioChannels.HasValue) { - if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 1500000) + if (targetAudioChannels.Value >= 5 && (maxTotalBitrate ?? 0) >= 1200000) { if (StringHelper.EqualsIgnoreCase(targetAudioCodec, "ac3")) { diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs index 75f2d2427..9c5015b0e 100644 --- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs +++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs @@ -386,7 +386,6 @@ namespace MediaBrowser.Server.Startup.Common new MovieDbEpisodeProviderMigration(ServerConfigurationManager), new DbMigration(ServerConfigurationManager, TaskManager), new UpdateLevelMigration(ServerConfigurationManager, this, HttpClient, JsonSerializer, _releaseAssetFilename), - new CollectionGroupingMigration(ServerConfigurationManager, UserManager), new CollectionsViewMigration(ServerConfigurationManager, UserManager) }; diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj index bbef5caea..5ee7d49e8 100644 --- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj +++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj @@ -70,7 +70,6 @@ - diff --git a/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs b/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs deleted file mode 100644 index 5041c49b8..000000000 --- a/MediaBrowser.Server.Startup.Common/Migrations/CollectionGroupingMigration.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System.Linq; -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Library; - -namespace MediaBrowser.Server.Startup.Common.Migrations -{ - public class CollectionGroupingMigration : IVersionMigration - { - private readonly IServerConfigurationManager _config; - private readonly IUserManager _userManager; - - public CollectionGroupingMigration(IServerConfigurationManager config, IUserManager userManager) - { - _config = config; - _userManager = userManager; - } - - public void Run() - { - var migrationKey = this.GetType().Name; - var migrationKeyList = _config.Configuration.Migrations.ToList(); - - if (!migrationKeyList.Contains(migrationKey)) - { - if (_config.Configuration.IsStartupWizardCompleted) - { - if (_userManager.Users.Any(i => i.Configuration.GroupMoviesIntoBoxSets)) - { - _config.Configuration.EnableGroupingIntoCollections = true; - } - } - - migrationKeyList.Add(migrationKey); - _config.Configuration.Migrations = migrationKeyList.ToArray(); - _config.SaveConfiguration(); - } - - } - } -} From f1d965c655781bc26b4ee84ef8c9b56fd7061e2f Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 22:54:21 -0400 Subject: [PATCH 5/9] update cards --- MediaBrowser.Dlna/PlayTo/Device.cs | 10 +++++----- MediaBrowser.Dlna/PlayTo/PlayToController.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs index 6ad5899da..174ca871a 100644 --- a/MediaBrowser.Dlna/PlayTo/Device.cs +++ b/MediaBrowser.Dlna/PlayTo/Device.cs @@ -479,17 +479,17 @@ namespace MediaBrowser.Dlna.PlayTo _successiveStopCount++; _connectFailureCount++; - if (_successiveStopCount >= maxSuccessiveStopReturns) - { - RestartTimerInactive(); - } - if (_connectFailureCount >= maxSuccessiveStopReturns) + if (_connectFailureCount >= 3) { if (OnDeviceUnavailable != null) { OnDeviceUnavailable(); } } + if (_successiveStopCount >= maxSuccessiveStopReturns) + { + RestartTimerInactive(); + } } catch (Exception ex) { diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index 7429330bd..913b34016 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -99,11 +99,11 @@ namespace MediaBrowser.Dlna.PlayTo public void Init(Device device) { _device = device; + _device.OnDeviceUnavailable = OnDeviceUnavailable; _device.PlaybackStart += _device_PlaybackStart; _device.PlaybackProgress += _device_PlaybackProgress; _device.PlaybackStopped += _device_PlaybackStopped; _device.MediaChanged += _device_MediaChanged; - _device.OnDeviceUnavailable = OnDeviceUnavailable; _device.Start(); From 90b9b739126b09c81d3c29ae5c51d6ee3408fc14 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 23:12:25 -0400 Subject: [PATCH 6/9] fix because you watched showing unwatched titles --- MediaBrowser.Api/Movies/MoviesService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs index 755713c84..66f2fac81 100644 --- a/MediaBrowser.Api/Movies/MoviesService.cs +++ b/MediaBrowser.Api/Movies/MoviesService.cs @@ -192,7 +192,8 @@ namespace MediaBrowser.Api.Movies SortOrder = SortOrder.Descending, Limit = 7, ParentId = parentIdGuid, - Recursive = true + Recursive = true, + IsPlayed = true }; var recentlyPlayedMovies = _libraryManager.GetItemList(query).ToList(); From dc09bb8c0847cec812364ee6f32be055741e76dc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 24 Aug 2016 23:44:59 -0400 Subject: [PATCH 7/9] fix dynamic images for osx --- Emby.Drawing/GDI/DynamicImageHelpers.cs | 48 ++++++------------------- 1 file changed, 10 insertions(+), 38 deletions(-) diff --git a/Emby.Drawing/GDI/DynamicImageHelpers.cs b/Emby.Drawing/GDI/DynamicImageHelpers.cs index 7b8ef2f98..e0ce90120 100644 --- a/Emby.Drawing/GDI/DynamicImageHelpers.cs +++ b/Emby.Drawing/GDI/DynamicImageHelpers.cs @@ -33,7 +33,9 @@ namespace Emby.Drawing.GDI graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - graphics.CompositingMode = CompositingMode.SourceCopy; + + // This causes the image to be blank in OSX + //graphics.CompositingMode = CompositingMode.SourceCopy; for (var row = 0; row < rows; row++) { @@ -44,19 +46,9 @@ namespace Emby.Drawing.GDI if (files.Count > index) { - using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true)) + using (var imgtemp = Image.FromFile(files[index])) { - using (var memoryStream = new MemoryStream()) - { - fileStream.CopyTo(memoryStream); - - memoryStream.Position = 0; - - using (var imgtemp = Image.FromStream(memoryStream, true, false)) - { - graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight); - } - } + graphics.DrawImage(imgtemp, x, y, cellWidth, cellHeight); } } @@ -90,7 +82,9 @@ namespace Emby.Drawing.GDI graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - graphics.CompositingMode = CompositingMode.SourceCopy; + + // This causes the image to be blank in OSX + //graphics.CompositingMode = CompositingMode.SourceCopy; for (var row = 0; row < rows; row++) { @@ -99,21 +93,10 @@ namespace Emby.Drawing.GDI var x = col * singleSize; var y = row * singleSize; - using (var fileStream = fileSystem.GetFileStream(files[index], FileMode.Open, FileAccess.Read, FileShare.Read, true)) + using (var imgtemp = Image.FromFile(files[index])) { - using (var memoryStream = new MemoryStream()) - { - fileStream.CopyTo(memoryStream); - - memoryStream.Position = 0; - - using (var imgtemp = Image.FromStream(memoryStream, true, false)) - { - graphics.DrawImage(imgtemp, x, y, singleSize, singleSize); - } - } + graphics.DrawImage(imgtemp, x, y, singleSize, singleSize); } - index++; } } @@ -121,16 +104,5 @@ namespace Emby.Drawing.GDI } } } - - private static Stream GetStream(Image image) - { - var ms = new MemoryStream(); - - image.Save(ms, ImageFormat.Png); - - ms.Position = 0; - - return ms; - } } } From 1c9e414794d5c70035421231f52a363666f273e0 Mon Sep 17 00:00:00 2001 From: Luke Date: Wed, 24 Aug 2016 23:54:07 -0400 Subject: [PATCH 8/9] update mac project --- .../Emby.Server.Mac.csproj | 394 ++++-------------- 1 file changed, 71 insertions(+), 323 deletions(-) diff --git a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj index 104923f8e..f04b833b9 100644 --- a/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj +++ b/MediaBrowser.Server.Mac/Emby.Server.Mac.csproj @@ -390,6 +390,9 @@ Resources\dashboard-ui\autoorganizetv.html + + Resources\dashboard-ui\camerauploadsettings.html + Resources\dashboard-ui\channelitems.html @@ -1128,9 +1131,6 @@ Resources\dashboard-ui\bower_components\emby-webcomponents\multidownload.js - - Resources\dashboard-ui\bower_components\emby-webcomponents\objectassign.js - Resources\dashboard-ui\bower_components\emby-webcomponents\playmenu.js @@ -1155,6 +1155,9 @@ Resources\dashboard-ui\bower_components\emby-webcomponents\shortcuts.js + + Resources\dashboard-ui\bower_components\emby-webcomponents\thememediaplayer.js + Resources\dashboard-ui\bower_components\emby-webcomponents\visibleinviewport.js @@ -1566,6 +1569,15 @@ Resources\dashboard-ui\bower_components\emby-webcomponents\playlisteditor\playlisteditor.js + + Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\array.js + + + Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\bind.js + + + Resources\dashboard-ui\bower_components\emby-webcomponents\polyfills\objectassign.js + Resources\dashboard-ui\bower_components\emby-webcomponents\prompt\nativeprompt.js @@ -1773,6 +1785,9 @@ Resources\dashboard-ui\bower_components\emby-webcomponents\subtitleeditor\subtitleeditor.template.html + + Resources\dashboard-ui\bower_components\emby-webcomponents\sync\sync.js + Resources\dashboard-ui\bower_components\emby-webcomponents\toast\toast.css @@ -1860,36 +1875,6 @@ Resources\dashboard-ui\bower_components\fetch\fetch.js - - Resources\dashboard-ui\bower_components\fingerprintjs2\.bower.json - - - Resources\dashboard-ui\bower_components\fingerprintjs2\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\fingerprintjs2\FAQ.md - - - Resources\dashboard-ui\bower_components\fingerprintjs2\README.md - - - Resources\dashboard-ui\bower_components\fingerprintjs2\bower.json - - - Resources\dashboard-ui\bower_components\fingerprintjs2\fingerprint2.js - - - Resources\dashboard-ui\bower_components\fingerprintjs2\gulpfile.js - - - Resources\dashboard-ui\bower_components\fingerprintjs2\index.html - - - Resources\dashboard-ui\bower_components\fingerprintjs2\package.json - - - Resources\dashboard-ui\bower_components\fingerprintjs2\dist\fingerprint2.min.js - Resources\dashboard-ui\bower_components\font-roboto\.bower.json @@ -2094,45 +2079,6 @@ Resources\dashboard-ui\bower_components\iron-a11y-keys-behavior\test\index.html - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.bower.json - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.gitignore - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.travis.yml - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\README.md - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\bower.json - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\hero.svg - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\index.html - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\iron-autogrow-textarea.html - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\.github\ISSUE_TEMPLATE.md - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\demo\index.html - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\test\basic.html - - - Resources\dashboard-ui\bower_components\iron-autogrow-textarea\test\index.html - Resources\dashboard-ui\bower_components\iron-behaviors\.bower.json @@ -2502,51 +2448,6 @@ Resources\dashboard-ui\bower_components\iron-iconset-svg\test\iron-iconset-svg.html - - Resources\dashboard-ui\bower_components\iron-input\.bower.json - - - Resources\dashboard-ui\bower_components\iron-input\.gitignore - - - Resources\dashboard-ui\bower_components\iron-input\.travis.yml - - - Resources\dashboard-ui\bower_components\iron-input\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\iron-input\README.md - - - Resources\dashboard-ui\bower_components\iron-input\bower.json - - - Resources\dashboard-ui\bower_components\iron-input\hero.svg - - - Resources\dashboard-ui\bower_components\iron-input\index.html - - - Resources\dashboard-ui\bower_components\iron-input\iron-input.html - - - Resources\dashboard-ui\bower_components\iron-input\.github\ISSUE_TEMPLATE.md - - - Resources\dashboard-ui\bower_components\iron-input\demo\index.html - - - Resources\dashboard-ui\bower_components\iron-input\test\disabled-input.html - - - Resources\dashboard-ui\bower_components\iron-input\test\index.html - - - Resources\dashboard-ui\bower_components\iron-input\test\iron-input.html - - - Resources\dashboard-ui\bower_components\iron-input\test\letters-only.html - Resources\dashboard-ui\bower_components\iron-meta\.bower.json @@ -2574,6 +2475,9 @@ Resources\dashboard-ui\bower_components\iron-meta\iron-meta.html + + Resources\dashboard-ui\bower_components\iron-meta\.github\ISSUE_TEMPLATE.md + Resources\dashboard-ui\bower_components\iron-meta\demo\index.html @@ -2586,45 +2490,6 @@ Resources\dashboard-ui\bower_components\iron-meta\test\iron-meta.html - - Resources\dashboard-ui\bower_components\iron-range-behavior\.bower.json - - - Resources\dashboard-ui\bower_components\iron-range-behavior\.gitignore - - - Resources\dashboard-ui\bower_components\iron-range-behavior\.travis.yml - - - Resources\dashboard-ui\bower_components\iron-range-behavior\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\iron-range-behavior\README.md - - - Resources\dashboard-ui\bower_components\iron-range-behavior\bower.json - - - Resources\dashboard-ui\bower_components\iron-range-behavior\index.html - - - Resources\dashboard-ui\bower_components\iron-range-behavior\iron-range-behavior.html - - - Resources\dashboard-ui\bower_components\iron-range-behavior\.github\ISSUE_TEMPLATE.md - - - Resources\dashboard-ui\bower_components\iron-range-behavior\demo\index.html - - - Resources\dashboard-ui\bower_components\iron-range-behavior\test\basic.html - - - Resources\dashboard-ui\bower_components\iron-range-behavior\test\index.html - - - Resources\dashboard-ui\bower_components\iron-range-behavior\test\x-progressbar.html - Resources\dashboard-ui\bower_components\iron-validatable-behavior\.bower.json @@ -3252,126 +3117,6 @@ Resources\dashboard-ui\bower_components\paper-icon-button\test\index.html - - Resources\dashboard-ui\bower_components\paper-input\.bower.json - - - Resources\dashboard-ui\bower_components\paper-input\.gitignore - - - Resources\dashboard-ui\bower_components\paper-input\.travis.yml - - - Resources\dashboard-ui\bower_components\paper-input\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\paper-input\README.md - - - Resources\dashboard-ui\bower_components\paper-input\all-imports.html - - - Resources\dashboard-ui\bower_components\paper-input\bower.json - - - Resources\dashboard-ui\bower_components\paper-input\hero.svg - - - Resources\dashboard-ui\bower_components\paper-input\index.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input-addon-behavior.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input-behavior.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input-char-counter.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input-container.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input-error.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-input.html - - - Resources\dashboard-ui\bower_components\paper-input\paper-textarea.html - - - Resources\dashboard-ui\bower_components\paper-input\.github\ISSUE_TEMPLATE.md - - - Resources\dashboard-ui\bower_components\paper-input\demo\index.html - - - Resources\dashboard-ui\bower_components\paper-input\demo\ssn-input.html - - - Resources\dashboard-ui\bower_components\paper-input\demo\ssn-validator.html - - - Resources\dashboard-ui\bower_components\paper-input\test\index.html - - - Resources\dashboard-ui\bower_components\paper-input\test\letters-only.html - - - Resources\dashboard-ui\bower_components\paper-input\test\paper-input-char-counter.html - - - Resources\dashboard-ui\bower_components\paper-input\test\paper-input-container.html - - - Resources\dashboard-ui\bower_components\paper-input\test\paper-input-error.html - - - Resources\dashboard-ui\bower_components\paper-input\test\paper-input.html - - - Resources\dashboard-ui\bower_components\paper-input\test\paper-textarea.html - - - Resources\dashboard-ui\bower_components\paper-progress\.bower.json - - - Resources\dashboard-ui\bower_components\paper-progress\.gitignore - - - Resources\dashboard-ui\bower_components\paper-progress\.travis.yml - - - Resources\dashboard-ui\bower_components\paper-progress\CONTRIBUTING.md - - - Resources\dashboard-ui\bower_components\paper-progress\README.md - - - Resources\dashboard-ui\bower_components\paper-progress\bower.json - - - Resources\dashboard-ui\bower_components\paper-progress\hero.svg - - - Resources\dashboard-ui\bower_components\paper-progress\index.html - - - Resources\dashboard-ui\bower_components\paper-progress\paper-progress.html - - - Resources\dashboard-ui\bower_components\paper-progress\.github\ISSUE_TEMPLATE.md - - - Resources\dashboard-ui\bower_components\paper-progress\demo\index.html - - - Resources\dashboard-ui\bower_components\paper-progress\test\basic.html - - - Resources\dashboard-ui\bower_components\paper-progress\test\index.html - Resources\dashboard-ui\bower_components\paper-ripple\.bower.json @@ -3729,6 +3474,9 @@ Resources\dashboard-ui\components\tvproviders\xmltv.template.html + + Resources\dashboard-ui\css\autoorganizetable.css + Resources\dashboard-ui\css\chromecast.css @@ -3801,6 +3549,9 @@ Resources\dashboard-ui\css\images\rotten.png + + Resources\dashboard-ui\css\images\throbber.gif + Resources\dashboard-ui\css\images\userflyoutdefault.png @@ -3987,6 +3738,48 @@ Resources\dashboard-ui\css\images\userdata\password.png + + Resources\dashboard-ui\dashboard\aboutpage.js + + + Resources\dashboard-ui\dashboard\autoorganizelog.js + + + Resources\dashboard-ui\dashboard\autoorganizesmart.js + + + Resources\dashboard-ui\dashboard\autoorganizetv.js + + + Resources\dashboard-ui\dashboard\cinemamodeconfiguration.js + + + Resources\dashboard-ui\dashboard\dashboardgeneral.js + + + Resources\dashboard-ui\dashboard\dashboardhosting.js + + + Resources\dashboard-ui\dashboard\devicesupload.js + + + Resources\dashboard-ui\dashboard\librarydisplay.js + + + Resources\dashboard-ui\dashboard\librarysettings.js + + + Resources\dashboard-ui\dashboard\livetvtunerprovider-satip.js + + + Resources\dashboard-ui\dashboard\logpage.js + + + Resources\dashboard-ui\dashboard\wizardcomponents.js + + + Resources\dashboard-ui\dashboard\wizardfinishpage.js + Resources\dashboard-ui\devices\android\android.css @@ -4008,9 +3801,6 @@ Resources\dashboard-ui\legacy\selectmenu.js - - Resources\dashboard-ui\scripts\aboutpage.js - Resources\dashboard-ui\scripts\addpluginpage.js @@ -4020,14 +3810,8 @@ Resources\dashboard-ui\scripts\autobackdrops.js - - Resources\dashboard-ui\scripts\autoorganizelog.js - - - Resources\dashboard-ui\scripts\autoorganizesmart.js - - - Resources\dashboard-ui\scripts\autoorganizetv.js + + Resources\dashboard-ui\scripts\camerauploadsettings.js Resources\dashboard-ui\scripts\channelitems.js @@ -4041,18 +3825,9 @@ Resources\dashboard-ui\scripts\chromecast.js - - Resources\dashboard-ui\scripts\cinemamodeconfiguration.js - Resources\dashboard-ui\scripts\connectlogin.js - - Resources\dashboard-ui\scripts\dashboardgeneral.js - - - Resources\dashboard-ui\scripts\dashboardhosting.js - Resources\dashboard-ui\scripts\dashboardpage.js @@ -4062,9 +3837,6 @@ Resources\dashboard-ui\scripts\devices.js - - Resources\dashboard-ui\scripts\devicesupload.js - Resources\dashboard-ui\scripts\dlnaprofile.js @@ -4140,18 +3912,12 @@ Resources\dashboard-ui\scripts\librarybrowser.js - - Resources\dashboard-ui\scripts\librarydisplay.js - Resources\dashboard-ui\scripts\librarymenu.js Resources\dashboard-ui\scripts\librarypathmapping.js - - Resources\dashboard-ui\scripts\librarysettings.js - Resources\dashboard-ui\scripts\livetvchannel.js @@ -4197,18 +3963,12 @@ Resources\dashboard-ui\scripts\livetvtunerprovider-m3u.js - - Resources\dashboard-ui\scripts\livetvtunerprovider-satip.js - Resources\dashboard-ui\scripts\localsync.js Resources\dashboard-ui\scripts\loginpage.js - - Resources\dashboard-ui\scripts\logpage.js - Resources\dashboard-ui\scripts\mediacontroller.js @@ -4371,9 +4131,6 @@ Resources\dashboard-ui\scripts\supporterkeypage.js - - Resources\dashboard-ui\scripts\sync.js - Resources\dashboard-ui\scripts\syncactivity.js @@ -4386,9 +4143,6 @@ Resources\dashboard-ui\scripts\taskbutton.js - - Resources\dashboard-ui\scripts\thememediaplayer.js - Resources\dashboard-ui\scripts\tvgenres.js @@ -4431,15 +4185,9 @@ Resources\dashboard-ui\scripts\wizardagreement.js - - Resources\dashboard-ui\scripts\wizardcomponents.js - Resources\dashboard-ui\scripts\wizardcontroller.js - - Resources\dashboard-ui\scripts\wizardfinishpage.js - Resources\dashboard-ui\scripts\wizardlivetvguide.js From f5a6a418f58b26f49ff8fc17c32e391f79565105 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 25 Aug 2016 00:54:06 -0400 Subject: [PATCH 9/9] update scaling with MaxHeight --- Emby.Drawing/GDI/DynamicImageHelpers.cs | 4 ++-- Emby.Drawing/GDI/GDIImageEncoder.cs | 8 +++++--- MediaBrowser.Api/Playback/BaseStreamingService.cs | 2 +- MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Emby.Drawing/GDI/DynamicImageHelpers.cs b/Emby.Drawing/GDI/DynamicImageHelpers.cs index e0ce90120..59340af8a 100644 --- a/Emby.Drawing/GDI/DynamicImageHelpers.cs +++ b/Emby.Drawing/GDI/DynamicImageHelpers.cs @@ -34,7 +34,7 @@ namespace Emby.Drawing.GDI graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - // This causes the image to be blank in OSX + // SourceCopy causes the image to be blank in OSX //graphics.CompositingMode = CompositingMode.SourceCopy; for (var row = 0; row < rows; row++) @@ -83,7 +83,7 @@ namespace Emby.Drawing.GDI graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; - // This causes the image to be blank in OSX + // SourceCopy causes the image to be blank in OSX //graphics.CompositingMode = CompositingMode.SourceCopy; for (var row = 0; row < rows; row++) diff --git a/Emby.Drawing/GDI/GDIImageEncoder.cs b/Emby.Drawing/GDI/GDIImageEncoder.cs index bdd1c5a22..afd16899d 100644 --- a/Emby.Drawing/GDI/GDIImageEncoder.cs +++ b/Emby.Drawing/GDI/GDIImageEncoder.cs @@ -119,9 +119,11 @@ namespace Emby.Drawing.GDI thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality; thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic; thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality; - thumbnailGraph.CompositingMode = !hasPostProcessing ? - CompositingMode.SourceCopy : - CompositingMode.SourceOver; + + // SourceCopy causes the image to be blank in OSX + //thumbnailGraph.CompositingMode = !hasPostProcessing ? + // CompositingMode.SourceCopy : + // CompositingMode.SourceOver; SetBackgroundColor(thumbnailGraph, options); diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 6f4b6323d..a022c83d8 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -644,7 +644,7 @@ namespace MediaBrowser.Api.Playback { var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture); - filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam)); + filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(max(iw/dar\\,ih)\\,{0})", maxHeightParam)); } } diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index aaa5593b4..6bf414dfa 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -978,7 +978,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { var maxHeightParam = request.MaxHeight.Value.ToString(UsCulture); - filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(ih\\,{0})", maxHeightParam)); + filters.Add(string.Format("scale=trunc(oh*a/2)*2:min(max(iw/dar\\,ih)\\,{0})", maxHeightParam)); } }