Merge pull request #12420 from gnattu/codec-profile-subcontainer
Add SubContainer support to CodecProfile
This commit is contained in:
commit
d250f7bd95
|
@ -28,24 +28,28 @@ namespace MediaBrowser.Model.Dlna
|
||||||
[XmlAttribute("container")]
|
[XmlAttribute("container")]
|
||||||
public string Container { get; set; }
|
public string Container { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("subcontainer")]
|
||||||
|
public string SubContainer { get; set; }
|
||||||
|
|
||||||
public string[] GetCodecs()
|
public string[] GetCodecs()
|
||||||
{
|
{
|
||||||
return ContainerProfile.SplitValue(Codec);
|
return ContainerProfile.SplitValue(Codec);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ContainsContainer(string container)
|
private bool ContainsContainer(string container, bool useSubContainer = false)
|
||||||
{
|
{
|
||||||
return ContainerProfile.ContainsContainer(Container, container);
|
var containerToCheck = useSubContainer && string.Equals(Container, "hls", StringComparison.OrdinalIgnoreCase) ? SubContainer : Container;
|
||||||
|
return ContainerProfile.ContainsContainer(containerToCheck, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ContainsAnyCodec(string codec, string container)
|
public bool ContainsAnyCodec(string codec, string container, bool useSubContainer = false)
|
||||||
{
|
{
|
||||||
return ContainsAnyCodec(ContainerProfile.SplitValue(codec), container);
|
return ContainsAnyCodec(ContainerProfile.SplitValue(codec), container, useSubContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ContainsAnyCodec(string[] codec, string container)
|
public bool ContainsAnyCodec(string[] codec, string container, bool useSubContainer = false)
|
||||||
{
|
{
|
||||||
if (!ContainsContainer(container))
|
if (!ContainsContainer(container, useSubContainer))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -962,9 +962,11 @@ namespace MediaBrowser.Model.Dlna
|
||||||
int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio);
|
int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio);
|
||||||
int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video);
|
int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video);
|
||||||
|
|
||||||
|
var useSubContainer = playlistItem.SubProtocol == MediaStreamProtocol.hls;
|
||||||
|
|
||||||
var appliedVideoConditions = options.Profile.CodecProfiles
|
var appliedVideoConditions = options.Profile.CodecProfiles
|
||||||
.Where(i => i.Type == CodecType.Video &&
|
.Where(i => i.Type == CodecType.Video &&
|
||||||
i.ContainsAnyCodec(videoStream?.Codec, container) &&
|
i.ContainsAnyCodec(videoStream?.Codec, container, useSubContainer) &&
|
||||||
i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc)))
|
i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc)))
|
||||||
// Reverse codec profiles for backward compatibility - first codec profile has higher priority
|
// Reverse codec profiles for backward compatibility - first codec profile has higher priority
|
||||||
.Reverse();
|
.Reverse();
|
||||||
|
@ -974,7 +976,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
var transcodingVideoCodecs = ContainerProfile.SplitValue(videoCodec);
|
var transcodingVideoCodecs = ContainerProfile.SplitValue(videoCodec);
|
||||||
foreach (var transcodingVideoCodec in transcodingVideoCodecs)
|
foreach (var transcodingVideoCodec in transcodingVideoCodecs)
|
||||||
{
|
{
|
||||||
if (i.ContainsAnyCodec(transcodingVideoCodec, container))
|
if (i.ContainsAnyCodec(transcodingVideoCodec, container, useSubContainer))
|
||||||
{
|
{
|
||||||
ApplyTranscodingConditions(playlistItem, i.Conditions, transcodingVideoCodec, true, true);
|
ApplyTranscodingConditions(playlistItem, i.Conditions, transcodingVideoCodec, true, true);
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user