aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/MediaEncoding
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/MediaEncoding')
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs8
-rw-r--r--MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs3
-rw-r--r--MediaBrowser.Controller/MediaEncoding/MediaStreamSelector.cs24
3 files changed, 22 insertions, 13 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs
index a988c2f97..fe0fb3295 100644
--- a/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs
+++ b/MediaBrowser.Controller/MediaEncoding/EncodingJobOptions.cs
@@ -5,6 +5,7 @@ namespace MediaBrowser.Controller.MediaEncoding
public class EncodingJobOptions
{
public string OutputContainer { get; set; }
+ public string OutputDirectory { get; set; }
public long? StartTimeTicks { get; set; }
public int? Width { get; set; }
@@ -80,12 +81,17 @@ namespace MediaBrowser.Controller.MediaEncoding
VideoCodec = info.VideoCodec;
VideoBitRate = info.VideoBitrate;
AudioStreamIndex = info.AudioStreamIndex;
- SubtitleStreamIndex = info.SubtitleStreamIndex;
MaxRefFrames = info.MaxRefFrames;
MaxVideoBitDepth = info.MaxVideoBitDepth;
SubtitleMethod = info.SubtitleDeliveryMethod;
Cabac = info.Cabac;
Context = info.Context;
+
+ if (info.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Encode ||
+ info.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed)
+ {
+ SubtitleStreamIndex = info.SubtitleStreamIndex;
+ }
}
}
}
diff --git a/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs b/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs
index 9e32fc32b..37c2bf4d2 100644
--- a/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs
+++ b/MediaBrowser.Controller/MediaEncoding/ISubtitleEncoder.cs
@@ -47,9 +47,8 @@ namespace MediaBrowser.Controller.MediaEncoding
/// Gets the subtitle language encoding parameter.
/// </summary>
/// <param name="path">The path.</param>
- /// <param name="language">The language.</param>
/// <returns>System.String.</returns>
- string GetSubtitleFileCharacterSet(string path, string language);
+ string GetSubtitleFileCharacterSet(string path);
}
}
diff --git a/MediaBrowser.Controller/MediaEncoding/MediaStreamSelector.cs b/MediaBrowser.Controller/MediaEncoding/MediaStreamSelector.cs
index 4a807df7a..57fddb2b1 100644
--- a/MediaBrowser.Controller/MediaEncoding/MediaStreamSelector.cs
+++ b/MediaBrowser.Controller/MediaEncoding/MediaStreamSelector.cs
@@ -38,7 +38,8 @@ namespace MediaBrowser.Controller.MediaEncoding
SubtitlePlaybackMode mode,
string audioTrackLanguage)
{
- streams = GetSortedStreams(streams, MediaStreamType.Subtitle, preferredLanguages).ToList();
+ streams = GetSortedStreams(streams, MediaStreamType.Subtitle, preferredLanguages)
+ .ToList();
var full = streams.Where(s => !s.IsForced);
@@ -81,21 +82,24 @@ namespace MediaBrowser.Controller.MediaEncoding
private static IEnumerable<MediaStream> GetSortedStreams(IEnumerable<MediaStream> streams, MediaStreamType type, List<string> languagePreferences)
{
- var orderStreams = streams
- .Where(i => i.Type == type);
-
// Give some preferance to external text subs for better performance
- return orderStreams.OrderBy(i =>
+ return streams.Where(i => i.Type == type)
+ .OrderBy(i =>
{
var index = languagePreferences.FindIndex(l => string.Equals(i.Language, l, StringComparison.OrdinalIgnoreCase));
return index == -1 ? 100 : index;
})
- .ThenBy(i => i.IsDefault)
- .ThenBy(i => i.IsTextSubtitleStream)
- .ThenBy(i => i.IsExternal)
- .ThenBy(i => i.Index)
- .ToList();
+ .ThenBy(i => GetBooleanOrderBy(i.IsDefault))
+ .ThenBy(i => GetBooleanOrderBy(i.SupportsExternalStream))
+ .ThenBy(i => GetBooleanOrderBy(i.IsTextSubtitleStream))
+ .ThenBy(i => GetBooleanOrderBy(i.IsExternal))
+ .ThenBy(i => i.Index);
+ }
+
+ private static int GetBooleanOrderBy(bool value)
+ {
+ return value ? 0 : 1;
}
}
}