StreamBuilder tweaks (#5668)
Co-authored-by: Cody Robibero <cody@robibe.ro>
This commit is contained in:
parent
7c51d0a50e
commit
21e7ceae8e
|
@ -674,7 +674,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
|
||||
var videoStream = item.VideoStream;
|
||||
|
||||
// TODO: This doesn't accout for situation of device being able to handle media bitrate, but wifi connection not fast enough
|
||||
// TODO: This doesn't account for situations where the device is able to handle the media's bitrate, but the connection isn't fast enough
|
||||
var directPlayEligibilityResult = IsEligibleForDirectPlay(item, GetBitrateForDirectPlayCheck(item, options, true) ?? 0, subtitleStream, options, PlayMethod.DirectPlay);
|
||||
var directStreamEligibilityResult = IsEligibleForDirectPlay(item, options.GetMaxBitrate(false) ?? 0, subtitleStream, options, PlayMethod.DirectStream);
|
||||
bool isEligibleForDirectPlay = options.EnableDirectPlay && (options.ForceDirectPlay || directPlayEligibilityResult.Item1);
|
||||
|
@ -1017,14 +1017,15 @@ namespace MediaBrowser.Model.Dlna
|
|||
}
|
||||
|
||||
DeviceProfile profile = options.Profile;
|
||||
string container = mediaSource.Container;
|
||||
|
||||
// See if it can be direct played
|
||||
DirectPlayProfile directPlay = null;
|
||||
foreach (var i in profile.DirectPlayProfiles)
|
||||
foreach (var p in profile.DirectPlayProfiles)
|
||||
{
|
||||
if (i.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(i, mediaSource, videoStream, audioStream))
|
||||
if (p.Type == DlnaProfileType.Video && IsVideoDirectPlaySupported(p, container, videoStream, audioStream))
|
||||
{
|
||||
directPlay = i;
|
||||
directPlay = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1032,23 +1033,23 @@ namespace MediaBrowser.Model.Dlna
|
|||
if (directPlay == null)
|
||||
{
|
||||
_logger.LogInformation(
|
||||
"Profile: {0}, No video direct play profiles found for {1} with codec {2}",
|
||||
profile?.Name ?? "Unknown Profile",
|
||||
mediaSource?.Path ?? "Unknown path",
|
||||
videoStream?.Codec ?? "Unknown codec");
|
||||
"Container: {Container}, Video: {Video}, Audio: {Audio} cannot be direct played by profile: {Profile} for path: {Path}",
|
||||
container,
|
||||
videoStream?.Codec ?? "no video",
|
||||
audioStream?.Codec ?? "no audio",
|
||||
profile.Name ?? "unknown profile",
|
||||
mediaSource.Path ?? "unknown path");
|
||||
|
||||
return (null, GetTranscodeReasonsFromDirectPlayProfile(mediaSource, videoStream, audioStream, profile.DirectPlayProfiles));
|
||||
}
|
||||
|
||||
string container = mediaSource.Container;
|
||||
|
||||
var conditions = new List<ProfileCondition>();
|
||||
foreach (var i in profile.ContainerProfiles)
|
||||
foreach (var p in profile.ContainerProfiles)
|
||||
{
|
||||
if (i.Type == DlnaProfileType.Video
|
||||
&& i.ContainsContainer(container))
|
||||
if (p.Type == DlnaProfileType.Video
|
||||
&& p.ContainsContainer(container))
|
||||
{
|
||||
foreach (var c in i.Conditions)
|
||||
foreach (var c in p.Conditions)
|
||||
{
|
||||
conditions.Add(c);
|
||||
}
|
||||
|
@ -1896,10 +1897,10 @@ namespace MediaBrowser.Model.Dlna
|
|||
return true;
|
||||
}
|
||||
|
||||
private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, MediaSourceInfo item, MediaStream videoStream, MediaStream audioStream)
|
||||
private bool IsVideoDirectPlaySupported(DirectPlayProfile profile, string container, MediaStream videoStream, MediaStream audioStream)
|
||||
{
|
||||
// Check container type
|
||||
if (!profile.SupportsContainer(item.Container))
|
||||
if (!profile.SupportsContainer(container))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user