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