aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs12
-rw-r--r--MediaBrowser.Api/Playback/Hls/VideoHlsService.cs2
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs37
-rw-r--r--MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs46
4 files changed, 82 insertions, 15 deletions
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 0fe1e533d..d64c009a0 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -879,7 +879,7 @@ namespace MediaBrowser.Api.Playback.Hls
// Add resolution params, if specified
if (!hasGraphicalSubs)
{
- args += EncodingHelper.GetOutputSizeParam(state, codec, EnableCopyTs(state));
+ args += EncodingHelper.GetOutputSizeParam(state, codec, true);
}
// This is for internal graphical subs
@@ -891,7 +891,7 @@ namespace MediaBrowser.Api.Playback.Hls
//args += " -flags -global_header";
}
- if (EnableCopyTs(state) && args.IndexOf("-copyts", StringComparison.OrdinalIgnoreCase) == -1)
+ if (args.IndexOf("-copyts", StringComparison.OrdinalIgnoreCase) == -1)
{
args += " -copyts";
}
@@ -901,13 +901,9 @@ namespace MediaBrowser.Api.Playback.Hls
args += " -vsync " + state.OutputVideoSync;
}
- return args;
- }
+ args += EncodingHelper.GetOutputFFlags(state);
- private bool EnableCopyTs(StreamState state)
- {
- //return state.SubtitleStream != null && state.SubtitleStream.IsTextSubtitleStream && state.VideoRequest.SubtitleMethod == SubtitleDeliveryMethod.Encode;
- return true;
+ return args;
}
protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding)
diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
index 22c6202e4..e32970be5 100644
--- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
@@ -124,6 +124,8 @@ namespace MediaBrowser.Api.Playback.Hls
args += " -vsync " + state.OutputVideoSync;
}
+ args += EncodingHelper.GetOutputFFlags(state);
+
return args;
}
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
index ca0b97a9f..11311905c 100644
--- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
+++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs
@@ -1306,7 +1306,8 @@ namespace MediaBrowser.Controller.MediaEncoding
filters.Add("format=nv12|vaapi");
filters.Add("hwupload");
}
- else if (state.DeInterlace && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
+
+ if (state.DeInterlace && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
{
filters.Add("yadif=0:-1:0");
}
@@ -1533,14 +1534,26 @@ namespace MediaBrowser.Controller.MediaEncoding
}
var flags = new List<string>();
- if (state.IgnoreDts)
+ if (state.IgnoreInputDts)
{
flags.Add("+igndts");
}
- if (state.IgnoreIndex)
+ if (state.IgnoreInputIndex)
{
flags.Add("+ignidx");
}
+ if (state.GenPtsInput)
+ {
+ flags.Add("+genpts");
+ }
+ if (state.DiscardCorruptFramesInput)
+ {
+ flags.Add("+discardcorrupt");
+ }
+ if (state.EnableFastSeekInput)
+ {
+ flags.Add("+fastseek");
+ }
if (flags.Count > 0)
{
@@ -1864,6 +1877,22 @@ namespace MediaBrowser.Controller.MediaEncoding
).Trim();
}
+ public string GetOutputFFlags(EncodingJobInfo state)
+ {
+ var flags = new List<string>();
+ if (state.GenPtsOutput)
+ {
+ flags.Add("+genpts");
+ }
+
+ if (flags.Count > 0)
+ {
+ return " -fflags " + string.Join("", flags.ToArray());
+ }
+
+ return string.Empty;
+ }
+
public string GetProgressiveVideoArguments(EncodingJobInfo state, EncodingOptions encodingOptions, string videoCodec, string defaultH264Preset)
{
var args = "-codec:v:0 " + videoCodec;
@@ -1943,6 +1972,8 @@ namespace MediaBrowser.Controller.MediaEncoding
args += " -vsync " + state.OutputVideoSync;
}
+ args += GetOutputFFlags(state);
+
return args;
}
diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs b/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs
index 28ada9dae..409dec482 100644
--- a/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs
+++ b/MediaBrowser.Controller/MediaEncoding/EncodingJobInfo.cs
@@ -39,14 +39,52 @@ namespace MediaBrowser.Controller.MediaEncoding
public bool ReadInputAtNativeFramerate { get; set; }
- public bool IgnoreDts
+ public bool IgnoreInputDts
{
- get { return MediaSource.IgnoreDts; }
+ get
+ {
+ return MediaSource.IgnoreDts;
+ }
+ }
+
+ public bool IgnoreInputIndex
+ {
+ get
+ {
+ return MediaSource.IgnoreIndex;
+ }
+ }
+
+ public bool GenPtsInput
+ {
+ get
+ {
+ return false;
+ }
}
- public bool IgnoreIndex
+ public bool DiscardCorruptFramesInput
{
- get { return MediaSource.IgnoreIndex; }
+ get
+ {
+ return false;
+ }
+ }
+
+ public bool EnableFastSeekInput
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+ public bool GenPtsOutput
+ {
+ get
+ {
+ return false;
+ }
}
public string OutputContainer { get; set; }