diff options
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamInfo.cs')
| -rw-r--r-- | MediaBrowser.Model/Dlna/StreamInfo.cs | 99 |
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> |
