|
@@ -60,7 +60,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
private readonly Version _minFixedKernel60i915Hang = new Version(6, 0, 18);
|
|
|
private readonly Version _minKernelVersionAmdVkFmtModifier = new Version(5, 15);
|
|
|
|
|
|
- private readonly Version _minFFmpegImplictHwaccel = new Version(6, 0);
|
|
|
+ private readonly Version _minFFmpegImplicitHwaccel = new Version(6, 0);
|
|
|
private readonly Version _minFFmpegHwaUnsafeOutput = new Version(6, 0);
|
|
|
private readonly Version _minFFmpegOclCuTonemapMode = new Version(5, 1, 3);
|
|
|
private readonly Version _minFFmpegSvtAv1Params = new Version(5, 1);
|
|
@@ -631,7 +631,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
{
|
|
|
if (string.IsNullOrWhiteSpace(container))
|
|
|
{
|
|
|
- // this may not work, but if the client is that broken we can not do anything better
|
|
|
+ // this may not work, but if the client is that broken we cannot do anything better
|
|
|
return "aac";
|
|
|
}
|
|
|
|
|
@@ -3649,8 +3649,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doCuTranspose = !string.IsNullOrEmpty(tranposeDir) && _mediaEncoder.SupportsFilter("transpose_cuda");
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doCuTranspose = !string.IsNullOrEmpty(transposeDir) && _mediaEncoder.SupportsFilter("transpose_cuda");
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isNvDecoder && doCuTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -3696,7 +3696,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// hw transpose
|
|
|
if (doCuTranspose)
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_cuda=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_cuda=dir={transposeDir}");
|
|
|
}
|
|
|
|
|
|
var isRext = IsVideoStreamHevcRext(state);
|
|
@@ -3856,8 +3856,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doOclTranspose = !string.IsNullOrEmpty(tranposeDir)
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doOclTranspose = !string.IsNullOrEmpty(transposeDir)
|
|
|
&& _mediaEncoder.SupportsFilterWithOption(FilterOptionType.TransposeOpenclReversal);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isD3d11vaDecoder && doOclTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
@@ -3901,12 +3901,12 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// map from d3d11va to opencl via d3d11-opencl interop.
|
|
|
mainFilters.Add("hwmap=derive_device=opencl:mode=read");
|
|
|
|
|
|
- // hw deint <= TODO: finsh the 'yadif_opencl' filter
|
|
|
+ // hw deint <= TODO: finish the 'yadif_opencl' filter
|
|
|
|
|
|
// hw transpose
|
|
|
if (doOclTranspose)
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_opencl=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_opencl=dir={transposeDir}");
|
|
|
}
|
|
|
|
|
|
var outFormat = doOclTonemap ? string.Empty : "nv12";
|
|
@@ -4097,8 +4097,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || ((isD3d11vaDecoder || isQsvDecoder) && doVppTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -4191,7 +4191,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
|
|
|
if (!string.IsNullOrEmpty(hwScaleFilter) && doVppTranspose)
|
|
|
{
|
|
|
- hwScaleFilter += $":transpose={tranposeDir}";
|
|
|
+ hwScaleFilter += $":transpose={transposeDir}";
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(hwScaleFilter) && isMjpegEncoder)
|
|
@@ -4384,8 +4384,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || ((isVaapiDecoder || isQsvDecoder) && doVppTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -4445,7 +4445,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// hw transpose(vaapi vpp)
|
|
|
if (isVaapiDecoder && doVppTranspose)
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_vaapi=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_vaapi=dir={transposeDir}");
|
|
|
}
|
|
|
|
|
|
var outFormat = doTonemap ? (((isQsvDecoder && doVppTranspose) || isRext) ? "p010" : string.Empty) : "nv12";
|
|
@@ -4455,7 +4455,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
|
|
|
if (!string.IsNullOrEmpty(hwScaleFilter) && isQsvDecoder && doVppTranspose)
|
|
|
{
|
|
|
- hwScaleFilter += $":transpose={tranposeDir}";
|
|
|
+ hwScaleFilter += $":transpose={transposeDir}";
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrEmpty(hwScaleFilter) && isMjpegEncoder)
|
|
@@ -4715,8 +4715,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doVaVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doVaVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isVaapiDecoder && doVaVppTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -4771,7 +4771,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// hw transpose
|
|
|
if (doVaVppTranspose)
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_vaapi=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_vaapi=dir={transposeDir}");
|
|
|
}
|
|
|
|
|
|
var outFormat = doTonemap ? (isRext ? "p010" : string.Empty) : "nv12";
|
|
@@ -4948,8 +4948,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
|| string.Equals(state.SubtitleStream.Codec, "ssa", StringComparison.OrdinalIgnoreCase));
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doVkTranspose = isVaapiDecoder && !string.IsNullOrEmpty(tranposeDir);
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doVkTranspose = isVaapiDecoder && !string.IsNullOrEmpty(transposeDir);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isVaapiDecoder && doVkTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -5042,13 +5042,13 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// vk transpose
|
|
|
if (doVkTranspose)
|
|
|
{
|
|
|
- if (string.Equals(tranposeDir, "reversal", StringComparison.OrdinalIgnoreCase))
|
|
|
+ if (string.Equals(transposeDir, "reversal", StringComparison.OrdinalIgnoreCase))
|
|
|
{
|
|
|
mainFilters.Add("flip_vulkan");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_vulkan=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_vulkan=dir={transposeDir}");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -5416,8 +5416,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var usingHwSurface = isVtDecoder && (_mediaEncoder.EncoderVersion >= _minFFmpegWorkingVtHwSurface);
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doVtTranspose = !string.IsNullOrEmpty(tranposeDir) && _mediaEncoder.SupportsFilter("transpose_vt");
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doVtTranspose = !string.IsNullOrEmpty(transposeDir) && _mediaEncoder.SupportsFilter("transpose_vt");
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && doVtTranspose;
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -5461,7 +5461,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
// hw transpose
|
|
|
if (doVtTranspose)
|
|
|
{
|
|
|
- mainFilters.Add($"transpose_vt=dir={tranposeDir}");
|
|
|
+ mainFilters.Add($"transpose_vt=dir={transposeDir}");
|
|
|
}
|
|
|
|
|
|
if (doVtTonemap)
|
|
@@ -5624,8 +5624,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var subH = state.SubtitleStream?.Height;
|
|
|
|
|
|
var rotation = state.VideoStream?.Rotation ?? 0;
|
|
|
- var tranposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
- var doRkVppTranspose = !string.IsNullOrEmpty(tranposeDir);
|
|
|
+ var transposeDir = rotation == 0 ? string.Empty : GetVideoTransposeDirection(state);
|
|
|
+ var doRkVppTranspose = !string.IsNullOrEmpty(transposeDir);
|
|
|
var swapWAndH = Math.Abs(rotation) == 90 && (isSwDecoder || (isRkmppDecoder && doRkVppTranspose));
|
|
|
var swpInW = swapWAndH ? inH : inW;
|
|
|
var swpInH = swapWAndH ? inW : inH;
|
|
@@ -5696,7 +5696,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
|
|
|
if (!string.IsNullOrEmpty(hwScaleFilter) && doRkVppTranspose)
|
|
|
{
|
|
|
- hwScaleFilter += $":transpose={tranposeDir}";
|
|
|
+ hwScaleFilter += $":transpose={transposeDir}";
|
|
|
}
|
|
|
|
|
|
// try enabling AFBC to save DDR bandwidth
|
|
@@ -6170,7 +6170,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|
|
var ffmpegVersion = _mediaEncoder.EncoderVersion;
|
|
|
|
|
|
// Set the av1 codec explicitly to trigger hw accelerator, otherwise libdav1d will be used.
|
|
|
- var isAv1 = ffmpegVersion < _minFFmpegImplictHwaccel
|
|
|
+ var isAv1 = ffmpegVersion < _minFFmpegImplicitHwaccel
|
|
|
&& string.Equals(videoCodec, "av1", StringComparison.OrdinalIgnoreCase);
|
|
|
|
|
|
// Allow profile mismatch if decoding H.264 baseline with d3d11va and vaapi hwaccels.
|