aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Dlna/StreamBuilder.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Dlna/StreamBuilder.cs')
-rw-r--r--MediaBrowser.Model/Dlna/StreamBuilder.cs35
1 files changed, 26 insertions, 9 deletions
diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs
index d4ca379c0..b04f1b0fb 100644
--- a/MediaBrowser.Model/Dlna/StreamBuilder.cs
+++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs
@@ -423,7 +423,24 @@ namespace MediaBrowser.Model.Dlna
playlistItem.Container = transcodingProfile.Container;
playlistItem.EstimateContentLength = transcodingProfile.EstimateContentLength;
playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
- playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0];
+
+ // TODO: We should probably preserve the full list and sent it tp the server that way
+ string[] supportedAudioCodecs = transcodingProfile.AudioCodec.Split(',');
+ string inputAudioCodec = audioStream == null ? null : audioStream.Codec;
+ foreach (string supportedAudioCodec in supportedAudioCodecs)
+ {
+ if (StringHelper.EqualsIgnoreCase(supportedAudioCodec, inputAudioCodec))
+ {
+ playlistItem.AudioCodec = supportedAudioCodec;
+ break;
+ }
+ }
+
+ if (string.IsNullOrEmpty(playlistItem.AudioCodec))
+ {
+ playlistItem.AudioCodec = supportedAudioCodecs[0];
+ }
+
playlistItem.VideoCodec = transcodingProfile.VideoCodec;
playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
playlistItem.SubProtocol = transcodingProfile.Protocol;
@@ -761,7 +778,12 @@ namespace MediaBrowser.Model.Dlna
// Look for an external profile that matches the stream type (text/graphical)
foreach (SubtitleProfile profile in subtitleProfiles)
{
- if (profile.Method != SubtitleDeliveryMethod.External)
+ if (profile.Method != SubtitleDeliveryMethod.External && profile.Method != SubtitleDeliveryMethod.Hls)
+ {
+ continue;
+ }
+
+ if (profile.Method == SubtitleDeliveryMethod.Hls && playMethod != PlayMethod.Transcode)
{
continue;
}
@@ -771,7 +793,8 @@ namespace MediaBrowser.Model.Dlna
continue;
}
- if (subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format))
+ if ((profile.Method == SubtitleDeliveryMethod.External && subtitleStream.IsTextSubtitleStream == MediaStream.IsTextFormat(profile.Format)) ||
+ (profile.Method == SubtitleDeliveryMethod.Hls && subtitleStream.IsTextSubtitleStream))
{
bool requiresConversion = !StringHelper.EqualsIgnoreCase(subtitleStream.Codec, profile.Format);
@@ -781,12 +804,6 @@ namespace MediaBrowser.Model.Dlna
{
return profile;
}
-
- // For sync we can handle the longer extraction times
- if (context == EncodingContext.Static && subtitleStream.IsTextSubtitleStream)
- {
- return profile;
- }
}
}
}