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