|
|
|
@ -10,8 +10,6 @@ namespace MediaBrowser.Model.Dlna
|
|
|
|
|
{
|
|
|
|
|
public class StreamBuilder
|
|
|
|
|
{
|
|
|
|
|
private readonly string[] _serverTextSubtitleOutputs = { "srt", "vtt", "ttml" };
|
|
|
|
|
|
|
|
|
|
public StreamInfo BuildAudioItem(AudioOptions options)
|
|
|
|
|
{
|
|
|
|
|
ValidateAudioInput(options);
|
|
|
|
@ -544,16 +542,18 @@ namespace MediaBrowser.Model.Dlna
|
|
|
|
|
|
|
|
|
|
private SubtitleProfile GetSubtitleProfile(MediaStream subtitleStream, VideoOptions options)
|
|
|
|
|
{
|
|
|
|
|
if (subtitleStream.IsTextSubtitleStream)
|
|
|
|
|
// Look for an external profile that matches the stream type (text/graphical)
|
|
|
|
|
foreach (SubtitleProfile profile in options.Profile.SubtitleProfiles)
|
|
|
|
|
{
|
|
|
|
|
SubtitleProfile externalProfile = GetSubtitleProfile(options.Profile.SubtitleProfiles, SubtitleDeliveryMethod.External, _serverTextSubtitleOutputs);
|
|
|
|
|
|
|
|
|
|
if (externalProfile != null)
|
|
|
|
|
if (profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format))
|
|
|
|
|
{
|
|
|
|
|
return externalProfile;
|
|
|
|
|
return profile;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SubtitleProfile embedProfile = GetSubtitleProfile(options.Profile.SubtitleProfiles, SubtitleDeliveryMethod.Embed, _serverTextSubtitleOutputs);
|
|
|
|
|
if (subtitleStream.IsTextSubtitleStream)
|
|
|
|
|
{
|
|
|
|
|
SubtitleProfile embedProfile = GetSubtitleProfile(options.Profile.SubtitleProfiles, SubtitleDeliveryMethod.Embed);
|
|
|
|
|
|
|
|
|
|
if (embedProfile != null)
|
|
|
|
|
{
|
|
|
|
@ -581,6 +581,19 @@ namespace MediaBrowser.Model.Dlna
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private SubtitleProfile GetSubtitleProfile(SubtitleProfile[] profiles, SubtitleDeliveryMethod method)
|
|
|
|
|
{
|
|
|
|
|
foreach (SubtitleProfile profile in profiles)
|
|
|
|
|
{
|
|
|
|
|
if (method == profile.Method)
|
|
|
|
|
{
|
|
|
|
|
return profile;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool IsAudioEligibleForDirectPlay(MediaSourceInfo item, int? maxBitrate)
|
|
|
|
|
{
|
|
|
|
|
// Honor the max bitrate setting
|
|
|
|
|