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());
}