subtitle profile fixes

This commit is contained in:
Luke Pulverenti 2015-02-02 13:14:02 -05:00
parent 71bdb8dc8a
commit be070a0bfe
2 changed files with 34 additions and 17 deletions

View File

@ -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)
{
// Look for an external profile that matches the stream type (text/graphical)
foreach (SubtitleProfile profile in options.Profile.SubtitleProfiles)
{
if (profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format))
{
return profile;
}
}
if (subtitleStream.IsTextSubtitleStream)
{
SubtitleProfile externalProfile = GetSubtitleProfile(options.Profile.SubtitleProfiles, SubtitleDeliveryMethod.External, _serverTextSubtitleOutputs);
if (externalProfile != null)
{
return externalProfile;
}
SubtitleProfile embedProfile = GetSubtitleProfile(options.Profile.SubtitleProfiles, SubtitleDeliveryMethod.Embed, _serverTextSubtitleOutputs);
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

View File

@ -141,16 +141,20 @@ namespace MediaBrowser.Model.Entities
{
if (Type != MediaStreamType.Subtitle) return false;
string codec = Codec ?? string.Empty;
// sub = external .sub file
return StringHelper.IndexOfIgnoreCase(codec, "pgs") == -1 &&
StringHelper.IndexOfIgnoreCase(codec, "dvd") == -1 &&
!StringHelper.EqualsIgnoreCase(codec, "sub");
return IsTextFormat(Codec);
}
}
public static bool IsTextFormat(string format)
{
string codec = format ?? string.Empty;
// sub = external .sub file
return StringHelper.IndexOfIgnoreCase(codec, "pgs") == -1 &&
StringHelper.IndexOfIgnoreCase(codec, "dvd") == -1 &&
!StringHelper.EqualsIgnoreCase(codec, "sub");
}
/// <summary>
/// Gets or sets the filename.