more work on streaming remotely

pull/702/head
Luke Pulverenti 12 years ago
parent e9cfa6cd26
commit b11d06f36f

@ -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 currentHeight = state.VideoStream.Height ?? request.MaxHeight ?? request.Height ?? 0;
var currentWidth = request.MaxWidth ?? request.Width ?? 0; var currentWidth = state.VideoStream.Width ?? 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 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);

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

@ -31,6 +31,19 @@ namespace MediaBrowser.Controller.Entities
} }
} }
/// <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>

@ -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>

@ -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>

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

Loading…
Cancel
Save