diff --git a/VideoNodes/FfmpegBuilderNodes/Video/FfmpegBuilderVideoEncode/AV1.cs b/VideoNodes/FfmpegBuilderNodes/Video/FfmpegBuilderVideoEncode/AV1.cs index 8318e9fe..546da653 100644 --- a/VideoNodes/FfmpegBuilderNodes/Video/FfmpegBuilderVideoEncode/AV1.cs +++ b/VideoNodes/FfmpegBuilderNodes/Video/FfmpegBuilderVideoEncode/AV1.cs @@ -1,3 +1,5 @@ +using FileFlows.VideoNodes.Helpers; + namespace FileFlows.VideoNodes.FfmpegBuilderNodes; public partial class FfmpegBuilderVideoEncode @@ -79,4 +81,37 @@ public partial class FfmpegBuilderVideoEncode "-spatial-aq", "1" }; } + + /// + /// AV1 QSV encoding + /// + /// the quality + /// the speed + /// the encoding parameters + private static IEnumerable AV1_Qsv(int quality, string speed) + { + switch (speed) + { + case "ultrafast": speed = "7"; break; + case "superfast": speed = "7"; break; + case "veryfast": speed = "7"; break; + case "faster": speed = "6"; break; + case "fast": speed = "5"; break; + case "medium": speed = "4"; break; + case "slow": speed = "3"; break; + case "slower": speed = "2"; break; + case "veryslow": speed = "1"; break; + default: speed = "4"; break; // unexpected + } + var args = new List + { + "av1_qsv", + "-global_quality:v", quality.ToString(), + "-preset", speed + }; + if(VaapiHelper.VaapiLinux) + args.AddRange(new [] { "-qsv_device", VaapiHelper.VaapiRenderDevice}); + + return args.ToArray(); + } } \ No newline at end of file diff --git a/VideoNodes/LogicalNodes/CanUseHardwareEncoding.cs b/VideoNodes/LogicalNodes/CanUseHardwareEncoding.cs index 2f0361fc..aa59013a 100644 --- a/VideoNodes/LogicalNodes/CanUseHardwareEncoding.cs +++ b/VideoNodes/LogicalNodes/CanUseHardwareEncoding.cs @@ -113,6 +113,13 @@ public class CanUseHardwareEncoding:Node /// the node parameters /// true if can use it, otherwise false internal static bool CanProcess_Nvidia_AV1(NodeParameters args) => CanProcess(args, "av1_nvenc"); + + /// + /// Checks if this flow runner can use QSV AV1 encoder + /// + /// the node parameters + /// true if can use it, otherwise false + internal static bool CanProcess_Qsv_AV1(NodeParameters args) => CanProcess(args, "av1_qsv"); /// /// Checks if this flow runner can use NVIDIA H.264 encoder