aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-07-14 11:57:44 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-07-14 11:57:44 -0400
commita0e7cdd2dc364b10d717b805c576c4294144a99a (patch)
treeb636a9920a6876389bb8bf2a2e46e2909f20863f
parentfc24466110d70a43c8f901424b3a1df4b7827ea3 (diff)
support all inclusive direct play profile
-rw-r--r--Emby.Dlna/PlayTo/PlaylistItemFactory.cs5
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs5
-rw-r--r--MediaBrowser.Api/Playback/Hls/VideoHlsService.cs5
-rw-r--r--MediaBrowser.Model/Dlna/DirectPlayProfile.cs18
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs105
-rw-r--r--SharedVersion.cs2
6 files changed, 56 insertions, 84 deletions
diff --git a/Emby.Dlna/PlayTo/PlaylistItemFactory.cs b/Emby.Dlna/PlayTo/PlaylistItemFactory.cs
index 3eb2bc1d5..d31dc155e 100644
--- a/Emby.Dlna/PlayTo/PlaylistItemFactory.cs
+++ b/Emby.Dlna/PlayTo/PlaylistItemFactory.cs
@@ -56,8 +56,9 @@ namespace Emby.Dlna.PlayTo
if (profile.Container.Length > 0)
{
// Check container type
- var mediaContainer = Path.GetExtension(mediaPath);
- if (!profile.GetContainers().Any(i => string.Equals("." + i.TrimStart('.'), mediaContainer, StringComparison.OrdinalIgnoreCase)))
+ var mediaContainer = (Path.GetExtension(mediaPath) ?? string.Empty).TrimStart('.');
+
+ if (!profile.SupportsContainer(mediaContainer))
{
return false;
}
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 93ccd3cb2..2fc8fccbe 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -855,11 +855,6 @@ namespace MediaBrowser.Api.Playback.Hls
{
return string.Empty;
}
- // No known video stream
- if (state.VideoStream == null)
- {
- return string.Empty;
- }
var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions());
diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
index d11e6f215..227b55b1b 100644
--- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
@@ -79,11 +79,6 @@ namespace MediaBrowser.Api.Playback.Hls
{
return string.Empty;
}
- // No known video stream
- if (state.VideoStream == null)
- {
- return string.Empty;
- }
var codec = EncodingHelper.GetVideoEncoder(state, ApiEntryPoint.Instance.GetEncodingOptions());
diff --git a/MediaBrowser.Model/Dlna/DirectPlayProfile.cs b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs
index 0b6ecf385..df511b0da 100644
--- a/MediaBrowser.Model/Dlna/DirectPlayProfile.cs
+++ b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs
@@ -1,6 +1,7 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
+using System.Linq;
using System.Xml.Serialization;
-using MediaBrowser.Model.Dlna;
namespace MediaBrowser.Model.Dlna
{
@@ -28,6 +29,19 @@ namespace MediaBrowser.Model.Dlna
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()
{
List<string> list = new List<string>();
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index 3536b17b2..48f9a4212 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -492,52 +492,45 @@ namespace MediaBrowser.Model.Dlna
foreach (var profile in directPlayProfiles)
{
- if (profile.Container.Length > 0)
+ // Check container type
+ if (profile.SupportsContainer(item.Container))
{
- // Check container type
- string mediaContainer = item.Container ?? string.Empty;
- foreach (string i in profile.GetContainers())
+ containerSupported = true;
+
+ if (videoStream != null)
{
- if (StringHelper.EqualsIgnoreCase(i, mediaContainer))
+ // Check video codec
+ List<string> videoCodecs = profile.GetVideoCodecs();
+ if (videoCodecs.Count > 0)
{
- containerSupported = true;
-
- if (videoStream != null)
+ string videoCodec = videoStream.Codec;
+ if (!string.IsNullOrEmpty(videoCodec) && ListHelper.ContainsIgnoreCase(videoCodecs, videoCodec))
{
- // Check video codec
- 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;
- }
+ 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
- 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;
- }
+ audioSupported = true;
}
}
+ else
+ {
+ audioSupported = true;
+ }
}
}
}
@@ -1538,23 +1531,10 @@ namespace MediaBrowser.Model.Dlna
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
- 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;
- }
+ return false;
}
// Check audio codec
@@ -1574,23 +1554,10 @@ namespace MediaBrowser.Model.Dlna
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
- 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;
- }
+ return false;
}
// Check video codec
diff --git a/SharedVersion.cs b/SharedVersion.cs
index bbac8d0c8..a12afc2e9 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,3 +1,3 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.2.25.3")]
+[assembly: AssemblyVersion("3.2.25.4")]