diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index f09b9f6844..3e5da5b533 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -264,30 +264,24 @@ namespace MediaBrowser.Api.Playback } // If a max width was requested - if (request.MaxWidth.HasValue && !request.MaxHeight.HasValue) + if (request.MaxWidth.HasValue && (!request.MaxHeight.HasValue || state.VideoStream == null)) { return isH264Output ? string.Format(" -vf \"scale=min(iw\\,{0}):trunc(ow/a/2)*2{1}\"", request.MaxWidth.Value, assSubtitleParam) : string.Format(" -vf \"scale=min(iw\\,{0}):-1{1}\"", request.MaxWidth.Value, assSubtitleParam); } + if (state.VideoStream == null) + { + // No way to figure this out + return string.Empty; + } + // Need to perform calculations manually // Try to account for bad media info - var currentHeight = request.MaxHeight ?? request.Height ?? 0; - var currentWidth = request.MaxWidth ?? request.Width ?? 0; - - if (state.VideoStream != null) - { - if (state.VideoStream.Height.HasValue) - { - currentHeight = state.VideoStream.Height.Value; - } - if (state.VideoStream.Width.HasValue) - { - currentWidth = state.VideoStream.Width.Value; - } - } + var currentHeight = state.VideoStream.Height ?? request.MaxHeight ?? request.Height ?? 0; + var currentWidth = state.VideoStream.Width ?? request.MaxWidth ?? request.Width ?? 0; var outputSize = DrawingUtils.Resize(currentWidth, currentHeight, request.Width, request.Height, request.MaxWidth, request.MaxHeight); diff --git a/MediaBrowser.Common/Plugins/BasePlugin.cs b/MediaBrowser.Common/Plugins/BasePlugin.cs index f90cd2c0fe..3a7a57455f 100644 --- a/MediaBrowser.Common/Plugins/BasePlugin.cs +++ b/MediaBrowser.Common/Plugins/BasePlugin.cs @@ -253,6 +253,8 @@ namespace MediaBrowser.Common.Plugins { ApplicationPaths = applicationPaths; XmlSerializer = xmlSerializer; + + IsFirstRun = !File.Exists(ConfigurationFilePath); } /// diff --git a/MediaBrowser.Controller/Entities/BasePluginFolder.cs b/MediaBrowser.Controller/Entities/BasePluginFolder.cs index ca6cfd246f..bf8040a9fe 100644 --- a/MediaBrowser.Controller/Entities/BasePluginFolder.cs +++ b/MediaBrowser.Controller/Entities/BasePluginFolder.cs @@ -29,8 +29,21 @@ namespace MediaBrowser.Controller.Entities { base.Id = value; } + } + + /// + /// Gets or sets the type of the location. + /// + /// The type of the location. + public override LocationType LocationType + { + get + { + return LocationType.Virtual; + } } + /// /// We don't resolve normally so need to fill this in /// diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index b3ed21b19a..bac29f0f5a 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -11,6 +11,13 @@ namespace MediaBrowser.Controller.Entities /// public class Video : BaseItem, IHasMediaStreams { + public Video() + { + MediaStreams = new List(); + Chapters = new List(); + PlayableStreamFileNames = new List(); + } + /// /// Gets or sets the type of the video. /// diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs index cb3445dd3d..5a9f5890e2 100644 --- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs +++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs @@ -1,14 +1,13 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.IO; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Model.Logging; namespace MediaBrowser.Controller.Providers { @@ -29,7 +28,7 @@ namespace MediaBrowser.Controller.Providers /// true if XXXX, false otherwise public override bool Supports(BaseItem item) { - return item.ResolveArgs.IsDirectory && item.LocationType == LocationType.FileSystem; + return item.LocationType == LocationType.FileSystem && item.ResolveArgs.IsDirectory; } /// diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index b89ed54e36..b78aa88f3f 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -518,6 +518,8 @@ namespace MediaBrowser.Server.Implementations.Library // Add in the plug-in folders foreach (var child in PluginFolderCreators) { + var folder = child.GetFolder(); + rootFolder.AddVirtualChild(child.GetFolder()); }