aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna/StreamInfo.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamInfo.cs')
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfo.cs99
1 files changed, 79 insertions, 20 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs
index 3c2f39b74..57a3899d4 100644
--- a/MediaBrowser.Model/Dlna/StreamInfo.cs
+++ b/MediaBrowser.Model/Dlna/StreamInfo.cs
@@ -85,12 +85,12 @@ namespace MediaBrowser.Model.Dlna
}
}
- public string ToUrl(string baseUrl)
+ public string ToUrl(string baseUrl, string accessToken)
{
- return ToDlnaUrl(baseUrl);
+ return ToDlnaUrl(baseUrl, accessToken);
}
- public string ToDlnaUrl(string baseUrl)
+ public string ToDlnaUrl(string baseUrl, string accessToken)
{
if (PlayMethod == PlayMethod.DirectPlay)
{
@@ -152,7 +152,47 @@ namespace MediaBrowser.Model.Dlna
return string.Format("Params={0}", string.Join(";", list.ToArray()));
}
- public List<SubtitleStreamInfo> GetExternalSubtitles(string baseUrl, bool includeSelectedTrackOnly)
+ public List<SubtitleStreamInfo> GetExternalSubtitles(bool includeSelectedTrackOnly)
+ {
+ List<SubtitleStreamInfo> list = new List<SubtitleStreamInfo>();
+
+ // First add the selected track
+ if (SubtitleStreamIndex.HasValue)
+ {
+ foreach (MediaStream stream in MediaSource.MediaStreams)
+ {
+ if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
+ {
+ SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
+
+ if (info != null)
+ {
+ list.Add(info);
+ }
+ }
+ }
+ }
+
+ if (!includeSelectedTrackOnly)
+ {
+ foreach (MediaStream stream in MediaSource.MediaStreams)
+ {
+ if (stream.Type == MediaStreamType.Subtitle && (!SubtitleStreamIndex.HasValue || stream.Index != SubtitleStreamIndex.Value))
+ {
+ SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
+
+ if (info != null)
+ {
+ list.Add(info);
+ }
+ }
+ }
+ }
+
+ return list;
+ }
+
+ public List<SubtitleStreamInfo> GetExternalSubtitles(string baseUrl, string accessToken, bool includeSelectedTrackOnly)
{
if (string.IsNullOrEmpty(baseUrl))
{
@@ -173,7 +213,12 @@ namespace MediaBrowser.Model.Dlna
{
if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
{
- AddSubtitle(list, stream, baseUrl, startPositionTicks);
+ SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks);
+
+ if (info != null)
+ {
+ list.Add(info);
+ }
}
}
}
@@ -184,7 +229,12 @@ namespace MediaBrowser.Model.Dlna
{
if (stream.Type == MediaStreamType.Subtitle && (!SubtitleStreamIndex.HasValue || stream.Index != SubtitleStreamIndex.Value))
{
- AddSubtitle(list, stream, baseUrl, startPositionTicks);
+ SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks);
+
+ if (info != null)
+ {
+ list.Add(info);
+ }
}
}
}
@@ -192,32 +242,41 @@ namespace MediaBrowser.Model.Dlna
return list;
}
- private void AddSubtitle(List<SubtitleStreamInfo> list, MediaStream stream, string baseUrl, long startPositionTicks)
+ private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream, string baseUrl, string accessToken, long startPositionTicks)
{
- var subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile);
+ SubtitleStreamInfo info = GetSubtitleStreamInfo(stream);
- if (subtitleProfile.Method != SubtitleDeliveryMethod.External)
+ if (info != null)
{
- return;
+ info.Url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}",
+ baseUrl,
+ ItemId,
+ MediaSourceId,
+ StringHelper.ToStringCultureInvariant(stream.Index),
+ StringHelper.ToStringCultureInvariant(startPositionTicks),
+ SubtitleFormat);
}
- string url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}",
- baseUrl,
- ItemId,
- MediaSourceId,
- StringHelper.ToStringCultureInvariant(stream.Index),
- StringHelper.ToStringCultureInvariant(startPositionTicks),
- SubtitleFormat);
+ return info;
+ }
+
+ private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream)
+ {
+ SubtitleProfile subtitleProfile = StreamBuilder.GetSubtitleProfile(stream, DeviceProfile);
+
+ if (subtitleProfile.Method != SubtitleDeliveryMethod.External)
+ {
+ return null;
+ }
- list.Add(new SubtitleStreamInfo
+ return new SubtitleStreamInfo
{
- Url = url,
IsForced = stream.IsForced,
Language = stream.Language,
Name = stream.Language ?? "Unknown",
Format = SubtitleFormat,
Index = stream.Index
- });
+ };
}
/// <summary>