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