Enable OpenCL deinterlacer for AMF on Windows when available (#14144)

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
This commit is contained in:
Bond-009 2025-05-22 12:58:57 +02:00 committed by GitHub
commit 44981cd823
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 1 deletions

View File

@ -3491,6 +3491,21 @@ namespace MediaBrowser.Controller.MediaEncoding
doubleRateDeint ? "1" : "0"); doubleRateDeint ? "1" : "0");
} }
if (hwDeintSuffix.Contains("opencl", StringComparison.OrdinalIgnoreCase))
{
var useBwdif = options.DeinterlaceMethod == DeinterlaceMethod.bwdif;
if (_mediaEncoder.SupportsFilter("yadif_opencl")
&& _mediaEncoder.SupportsFilter("bwdif_opencl"))
{
return string.Format(
CultureInfo.InvariantCulture,
"{0}_opencl={1}:-1:0",
useBwdif ? "bwdif" : "yadif",
doubleRateDeint ? "1" : "0");
}
}
if (hwDeintSuffix.Contains("vaapi", StringComparison.OrdinalIgnoreCase)) if (hwDeintSuffix.Contains("vaapi", StringComparison.OrdinalIgnoreCase))
{ {
return string.Format( return string.Format(
@ -4123,7 +4138,12 @@ namespace MediaBrowser.Controller.MediaEncoding
// map from d3d11va to opencl via d3d11-opencl interop. // map from d3d11va to opencl via d3d11-opencl interop.
mainFilters.Add("hwmap=derive_device=opencl:mode=read"); mainFilters.Add("hwmap=derive_device=opencl:mode=read");
// hw deint <= TODO: finish the 'yadif_opencl' filter // hw deint
if (doDeintH2645)
{
var deintFilter = GetHwDeinterlaceFilter(state, options, "opencl");
mainFilters.Add(deintFilter);
}
// hw transpose // hw transpose
if (doOclTranspose) if (doOclTranspose)

View File

@ -123,6 +123,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
"tonemap_opencl", "tonemap_opencl",
"overlay_opencl", "overlay_opencl",
"transpose_opencl", "transpose_opencl",
"yadif_opencl",
"bwdif_opencl",
// vaapi // vaapi
"scale_vaapi", "scale_vaapi",
"deinterlace_vaapi", "deinterlace_vaapi",