Browse Source

more work on streaming remotely

Luke Pulverenti 12 years ago
parent
commit
b11d06f36f

+ 9 - 15
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -264,30 +264,24 @@ namespace MediaBrowser.Api.Playback
             }
             }
 
 
             // If a max width was requested
             // 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 ?
                 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}):trunc(ow/a/2)*2{1}\"", request.MaxWidth.Value, assSubtitleParam) :
                     string.Format(" -vf \"scale=min(iw\\,{0}):-1{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
             // Need to perform calculations manually
 
 
             // Try to account for bad media info
             // 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);
             var outputSize = DrawingUtils.Resize(currentWidth, currentHeight, request.Width, request.Height, request.MaxWidth, request.MaxHeight);
 
 

+ 2 - 0
MediaBrowser.Common/Plugins/BasePlugin.cs

@@ -253,6 +253,8 @@ namespace MediaBrowser.Common.Plugins
         {
         {
             ApplicationPaths = applicationPaths;
             ApplicationPaths = applicationPaths;
             XmlSerializer = xmlSerializer;
             XmlSerializer = xmlSerializer;
+
+            IsFirstRun = !File.Exists(ConfigurationFilePath);
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 13 - 0
MediaBrowser.Controller/Entities/BasePluginFolder.cs

@@ -29,8 +29,21 @@ namespace MediaBrowser.Controller.Entities
             {
             {
                 base.Id = value;
                 base.Id = value;
             }
             }
+        }        
+        
+        /// <summary>
+        /// Gets or sets the type of the location.
+        /// </summary>
+        /// <value>The type of the location.</value>
+        public override LocationType LocationType
+        {
+            get
+            {
+                return LocationType.Virtual;
+            }
         }
         }
 
 
+
         /// <summary>
         /// <summary>
         /// We don't resolve normally so need to fill this in
         /// We don't resolve normally so need to fill this in
         /// </summary>
         /// </summary>

+ 7 - 0
MediaBrowser.Controller/Entities/Video.cs

@@ -11,6 +11,13 @@ namespace MediaBrowser.Controller.Entities
     /// </summary>
     /// </summary>
     public class Video : BaseItem, IHasMediaStreams
     public class Video : BaseItem, IHasMediaStreams
     {
     {
+        public Video()
+        {
+            MediaStreams = new List<MediaStream>();
+            Chapters = new List<ChapterInfo>();
+            PlayableStreamFileNames = new List<string>();
+        }
+
         /// <summary>
         /// <summary>
         /// Gets or sets the type of the video.
         /// Gets or sets the type of the video.
         /// </summary>
         /// </summary>

+ 2 - 3
MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs

@@ -1,14 +1,13 @@
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.IO;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Logging;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
-using MediaBrowser.Model.Logging;
 
 
 namespace MediaBrowser.Controller.Providers
 namespace MediaBrowser.Controller.Providers
 {
 {
@@ -29,7 +28,7 @@ namespace MediaBrowser.Controller.Providers
         /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
         /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
         public override bool Supports(BaseItem item)
         public override bool Supports(BaseItem item)
         {
         {
-            return item.ResolveArgs.IsDirectory && item.LocationType == LocationType.FileSystem;
+            return item.LocationType == LocationType.FileSystem && item.ResolveArgs.IsDirectory;
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 2 - 0
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -518,6 +518,8 @@ namespace MediaBrowser.Server.Implementations.Library
             // Add in the plug-in folders
             // Add in the plug-in folders
             foreach (var child in PluginFolderCreators)
             foreach (var child in PluginFolderCreators)
             {
             {
+                var folder = child.GetFolder();
+
                 rootFolder.AddVirtualChild(child.GetFolder());
                 rootFolder.AddVirtualChild(child.GetFolder());
             }
             }