|
@@ -1639,35 +1639,45 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
var outputSizeParam = ReadOnlySpan<char>.Empty;
|
|
var outputSizeParam = ReadOnlySpan<char>.Empty;
|
|
var request = state.BaseRequest;
|
|
var request = state.BaseRequest;
|
|
|
|
|
|
- // Add resolution params, if specified
|
|
|
|
- if (request.Width.HasValue
|
|
|
|
- || request.Height.HasValue
|
|
|
|
- || request.MaxHeight.HasValue
|
|
|
|
- || request.MaxWidth.HasValue)
|
|
|
|
- {
|
|
|
|
- outputSizeParam = GetOutputSizeParam(state, options, outputVideoCodec).TrimEnd('"');
|
|
|
|
-
|
|
|
|
- // All possible beginning of video filters
|
|
|
|
- // Don't break the order
|
|
|
|
- string[] beginOfParam = new[]
|
|
|
|
- {
|
|
|
|
- "hwupload,tonemap_opencl",
|
|
|
|
- "hwupload=extra_hw_frames",
|
|
|
|
- "vpp",
|
|
|
|
- "hwdownload",
|
|
|
|
- "format",
|
|
|
|
- "yadif",
|
|
|
|
- "scale"
|
|
|
|
- };
|
|
|
|
|
|
+ outputSizeParam = GetOutputSizeParam(state, options, outputVideoCodec).TrimEnd('"');
|
|
|
|
+
|
|
|
|
+ // All possible beginning of video filters
|
|
|
|
+ // Don't break the order
|
|
|
|
+ string[] beginOfOutputSizeParam = new[]
|
|
|
|
+ {
|
|
|
|
+ // for tonemap_opencl
|
|
|
|
+ "hwupload,tonemap_opencl",
|
|
|
|
+
|
|
|
|
+ // hwupload=extra_hw_frames=64,vpp_qsv (for overlay_qsv on linux)
|
|
|
|
+ "hwupload=extra_hw_frames",
|
|
|
|
+
|
|
|
|
+ // vpp_qsv
|
|
|
|
+ "vpp",
|
|
|
|
+
|
|
|
|
+ // hwdownload,format=p010le (hardware decode + software encode for vaapi)
|
|
|
|
+ "hwdownload",
|
|
|
|
+
|
|
|
|
+ // format=nv12|vaapi,hwupload,scale_vaapi
|
|
|
|
+ "format",
|
|
|
|
+
|
|
|
|
+ // bwdif,scale=expr
|
|
|
|
+ "bwdif",
|
|
|
|
|
|
- for (int i = 0, index = -1; i < beginOfParam.Length; i++)
|
|
|
|
|
|
+ // yadif,scale=expr
|
|
|
|
+ "yadif",
|
|
|
|
+
|
|
|
|
+ // scale=expr
|
|
|
|
+ "scale"
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ var index = -1;
|
|
|
|
+ foreach (var param in beginOfOutputSizeParam)
|
|
|
|
+ {
|
|
|
|
+ index = outputSizeParam.IndexOf(param, StringComparison.OrdinalIgnoreCase);
|
|
|
|
+ if (index != -1)
|
|
{
|
|
{
|
|
- index = outputSizeParam.IndexOf(beginOfParam[i], StringComparison.OrdinalIgnoreCase);
|
|
|
|
- if (index != -1)
|
|
|
|
- {
|
|
|
|
- outputSizeParam = outputSizeParam.Slice(index);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
|
|
+ outputSizeParam = outputSizeParam.Slice(index);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|