Merge pull request #2756 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2017-07-14 11:58:24 -04:00 committed by GitHub
commit 2f8591e54a
6 changed files with 56 additions and 84 deletions

View File

@ -56,8 +56,9 @@ namespace Emby.Dlna.PlayTo
if (profile.Container.Length > 0) if (profile.Container.Length > 0)
{ {
// Check container type // Check container type
var mediaContainer = Path.GetExtension(mediaPath); var mediaContainer = (Path.GetExtension(mediaPath) ?? string.Empty).TrimStart('.');
if (!profile.GetContainers().Any(i => string.Equals("." + i.TrimStart('.'), mediaContainer, StringComparison.OrdinalIgnoreCase)))
if (!profile.SupportsContainer(mediaContainer))
{ {
return false; return false;
} }

View File

@ -855,11 +855,6 @@ namespace MediaBrowser.Api.Playback.Hls
{ {
return string.Empty; return string.Empty;
} }
// No known video stream
if (state.VideoStream == null)
{
return string.Empty;
}
var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions()); var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions());

View File

@ -79,11 +79,6 @@ namespace MediaBrowser.Api.Playback.Hls
{ {
return string.Empty; return string.Empty;
} }
// No known video stream
if (state.VideoStream == null)
{
return string.Empty;
}
var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions()); var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions());

View File

@ -1,6 +1,7 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Serialization; using System.Xml.Serialization;
using MediaBrowser.Model.Dlna;
namespace MediaBrowser.Model.Dlna namespace MediaBrowser.Model.Dlna
{ {
@ -28,6 +29,19 @@ namespace MediaBrowser.Model.Dlna
return list; return list;
} }
public bool SupportsContainer(string container)
{
var all = GetContainers();
// Only allow unknown container if the profile is all inclusive
if (string.IsNullOrWhiteSpace(container))
{
return all.Count == 0;
}
return all.Count == 0 || all.Contains(container, StringComparer.OrdinalIgnoreCase);
}
public List<string> GetAudioCodecs() public List<string> GetAudioCodecs()
{ {
List<string> list = new List<string>(); List<string> list = new List<string>();

View File

@ -492,52 +492,45 @@ namespace MediaBrowser.Model.Dlna
foreach (var profile in directPlayProfiles) foreach (var profile in directPlayProfiles)
{ {
if (profile.Container.Length > 0) // Check container type
if (profile.SupportsContainer(item.Container))
{ {
// Check container type containerSupported = true;
string mediaContainer = item.Container ?? string.Empty;
foreach (string i in profile.GetContainers()) if (videoStream != null)
{ {
if (StringHelper.EqualsIgnoreCase(i, mediaContainer)) // Check video codec
List<string> videoCodecs = profile.GetVideoCodecs();
if (videoCodecs.Count > 0)
{ {
containerSupported = true; string videoCodec = videoStream.Codec;
if (!string.IsNullOrEmpty(videoCodec) && ListHelper.ContainsIgnoreCase(videoCodecs, videoCodec))
if (videoStream != null)
{ {
// Check video codec videoSupported = true;
List<string> videoCodecs = profile.GetVideoCodecs();
if (videoCodecs.Count > 0)
{
string videoCodec = videoStream.Codec;
if (!string.IsNullOrEmpty(videoCodec) && ListHelper.ContainsIgnoreCase(videoCodecs, videoCodec))
{
videoSupported = true;
}
}
else
{
videoSupported = true;
}
} }
}
else
{
videoSupported = true;
}
}
if (audioStream != null) if (audioStream != null)
{
// Check audio codec
List<string> audioCodecs = profile.GetAudioCodecs();
if (audioCodecs.Count > 0)
{
string audioCodec = audioStream.Codec;
if (!string.IsNullOrEmpty(audioCodec) && ListHelper.ContainsIgnoreCase(audioCodecs, audioCodec))
{ {
// Check audio codec audioSupported = true;
List<string> audioCodecs = profile.GetAudioCodecs();
if (audioCodecs.Count > 0)
{
string audioCodec = audioStream.Codec;
if (!string.IsNullOrEmpty(audioCodec) && ListHelper.ContainsIgnoreCase(audioCodecs, audioCodec))
{
audioSupported = true;
}
}
else
{
audioSupported = true;
}
} }
} }
else
{
audioSupported = true;
}
} }
} }
} }
@ -1538,23 +1531,10 @@ namespace MediaBrowser.Model.Dlna
private bool IsAudioDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream audioStream) private bool IsAudioDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream audioStream)
{ {
if (profile.Container.Length > 0) // Check container type
if (!profile.SupportsContainer(item.Container))
{ {
// Check container type return false;
string mediaContainer = item.Container ?? string.Empty;
bool any = false;
foreach (string i in profile.GetContainers())
{
if (StringHelper.EqualsIgnoreCase(i, mediaContainer))
{
any = true;
break;
}
}
if (!any)
{
return false;
}
} }
// Check audio codec // Check audio codec
@ -1574,23 +1554,10 @@ namespace MediaBrowser.Model.Dlna
private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream videoStream, MediaStream audioStream) private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream videoStream, MediaStream audioStream)
{ {
if (profile.Container.Length > 0) // Check container type
if (!profile.SupportsContainer(item.Container))
{ {
// Check container type return false;
string mediaContainer = item.Container ?? string.Empty;
bool any = false;
foreach (string i in profile.GetContainers())
{
if (StringHelper.EqualsIgnoreCase(i, mediaContainer))
{
any = true;
break;
}
}
if (!any)
{
return false;
}
} }
// Check video codec // Check video codec

View File

@ -1,3 +1,3 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.2.25.3")] [assembly: AssemblyVersion("3.2.25.4")]