Merge pull request #2676 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2017-05-31 15:28:03 -04:00 committed by GitHub
commit 4e10daf646
12 changed files with 78 additions and 10 deletions

View File

@ -135,6 +135,18 @@ namespace Emby.Dlna.Profiles
{
Format = "sub",
Method = SubtitleDeliveryMethod.Embed
},
new SubtitleProfile
{
Format = "subrip",
Method = SubtitleDeliveryMethod.Embed
},
new SubtitleProfile
{
Format = "vtt",
Method = SubtitleDeliveryMethod.Embed
}
};

View File

@ -55,5 +55,7 @@
<SubtitleProfile format="pgs" method="Embed" />
<SubtitleProfile format="pgssub" method="Embed" />
<SubtitleProfile format="sub" method="Embed" />
<SubtitleProfile format="subrip" method="Embed" />
<SubtitleProfile format="vtt" method="Embed" />
</SubtitleProfiles>
</Profile>

View File

@ -55,5 +55,7 @@
<SubtitleProfile format="pgs" method="Embed" />
<SubtitleProfile format="pgssub" method="Embed" />
<SubtitleProfile format="sub" method="Embed" />
<SubtitleProfile format="subrip" method="Embed" />
<SubtitleProfile format="vtt" method="Embed" />
</SubtitleProfiles>
</Profile>

View File

@ -61,5 +61,7 @@
<SubtitleProfile format="pgs" method="Embed" />
<SubtitleProfile format="pgssub" method="Embed" />
<SubtitleProfile format="sub" method="Embed" />
<SubtitleProfile format="subrip" method="Embed" />
<SubtitleProfile format="vtt" method="Embed" />
</SubtitleProfiles>
</Profile>

View File

@ -61,5 +61,7 @@
<SubtitleProfile format="pgs" method="Embed" />
<SubtitleProfile format="pgssub" method="Embed" />
<SubtitleProfile format="sub" method="Embed" />
<SubtitleProfile format="subrip" method="Embed" />
<SubtitleProfile format="vtt" method="Embed" />
</SubtitleProfiles>
</Profile>

View File

@ -58,6 +58,18 @@ namespace Emby.Server.Implementations.HttpServer
return GetHttpResult(content, contentType, true, responseHeaders);
}
public object GetRedirectResult(string url)
{
var responseHeaders = new Dictionary<string, string>();
responseHeaders["Location"] = url;
var result = new HttpResult(new byte[] { }, "text/plain", HttpStatusCode.Redirect);
AddResponseHeaders(result, responseHeaders);
return result;
}
/// <summary>
/// Gets the HTTP result.
/// </summary>
@ -601,7 +613,7 @@ namespace Emby.Server.Implementations.HttpServer
private async Task<IHasHeaders> GetCompressedResult(Stream stream,
string requestedCompressionType,
IDictionary<string,string> responseHeaders,
IDictionary<string, string> responseHeaders,
bool isHeadRequest,
string contentType)
{

View File

@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Threading.Tasks;
using MediaBrowser.Api.Playback.Hls;
using MediaBrowser.Api.Playback.Progressive;
@ -42,6 +41,7 @@ namespace MediaBrowser.Api.Playback
public string Container { get; set; }
public int? MaxAudioChannels { get; set; }
public int? TranscodingAudioChannels { get; set; }
public long? MaxStreamingBitrate { get; set; }
@ -51,6 +51,15 @@ namespace MediaBrowser.Api.Playback
public string TranscodingContainer { get; set; }
public string TranscodingProtocol { get; set; }
public int? MaxAudioSampleRate { get; set; }
public bool EnableRedirection { get; set; }
public bool EnableRemoteMedia { get; set; }
public bool BreakOnNonKeyFrames { get; set; }
public BaseUniversalRequest()
{
EnableRedirection = true;
}
}
[Route("/Audio/{Id}/universal.{Container}", "GET", Summary = "Gets an audio stream")]
@ -133,7 +142,9 @@ namespace MediaBrowser.Api.Playback
Context = EncodingContext.Streaming,
Container = request.TranscodingContainer,
AudioCodec = request.AudioCodec,
Protocol = request.TranscodingProtocol
Protocol = request.TranscodingProtocol,
BreakOnNonKeyFrames = request.BreakOnNonKeyFrames,
MaxAudioChannels = request.TranscodingAudioChannels.HasValue ? request.TranscodingAudioChannels.Value.ToString(CultureInfo.InvariantCulture) : null
}
};
@ -205,6 +216,17 @@ namespace MediaBrowser.Api.Playback
var mediaSource = playbackInfoResult.MediaSources[0];
if (mediaSource.SupportsDirectPlay && mediaSource.Protocol == MediaProtocol.Http)
{
if (request.EnableRedirection)
{
if (mediaSource.IsRemote && request.EnableRemoteMedia)
{
return ResultFactory.GetRedirectResult(mediaSource.Path);
}
}
}
var isStatic = mediaSource.SupportsDirectStream;
if (!isStatic && string.Equals(mediaSource.TranscodingSubProtocol, "hls", StringComparison.OrdinalIgnoreCase))
@ -242,7 +264,8 @@ namespace MediaBrowser.Api.Playback
StartTimeTicks = request.StartTimeTicks,
Static = isStatic,
SegmentContainer = request.TranscodingContainer,
AudioSampleRate = request.MaxAudioSampleRate
AudioSampleRate = request.MaxAudioSampleRate,
BreakOnNonKeyFrames = transcodingProfile.BreakOnNonKeyFrames
};
if (isHeadRequest)

View File

@ -100,6 +100,7 @@ namespace MediaBrowser.Api
config.EnableSimpleArtistDetection = true;
config.EnableNormalizedItemByNameIds = true;
config.DisableLiveTvChannelUserDataName = true;
config.EnableSimpleSortNameHandling = true;
}
public void Post(UpdateStartupConfiguration request)

View File

@ -655,7 +655,17 @@ namespace MediaBrowser.Controller.Entities
private string CreateSortNameFromCustomValue(string value)
{
return string.IsNullOrWhiteSpace(value) ? null : ModifySortChunks(value).ToLower();
return string.IsNullOrWhiteSpace(value) ? null : NormalizeCustomSortName(value);
}
protected virtual string NormalizeCustomSortName(string value)
{
if (ConfigurationManager.Configuration.EnableSimpleSortNameHandling)
{
return value.RemoveDiacritics().ToLower();
}
return ModifySortChunks(value).ToLower();
}
public bool IsSortNameDefault(string value)

View File

@ -101,7 +101,7 @@ namespace MediaBrowser.Controller.LiveTv
}
}
return Number + "-" + (Name ?? string.Empty);
return (Number ?? string.Empty) + "-" + (Name ?? string.Empty);
}
[IgnoreDataMember]

View File

@ -22,6 +22,8 @@ namespace MediaBrowser.Controller.Net
/// <returns>System.Object.</returns>
object GetResult(object content, string contentType, IDictionary<string,string> responseHeaders = null);
object GetRedirectResult(string url);
/// <summary>
/// Gets the optimized result.
/// </summary>

View File

@ -17,6 +17,8 @@ namespace MediaBrowser.Model.Configuration
/// <value><c>true</c> if [enable u pn p]; otherwise, <c>false</c>.</value>
public bool EnableUPnP { get; set; }
public bool EnableSimpleSortNameHandling { get; set; }
/// <summary>
/// Gets or sets the public mapped port.
/// </summary>
@ -77,8 +79,6 @@ namespace MediaBrowser.Model.Configuration
public string MetadataPath { get; set; }
public string MetadataNetworkPath { get; set; }
public string LastVersion { get; set; }
/// <summary>
/// Gets or sets the display name of the season zero.
/// </summary>