mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-04-30 08:39:07 -05:00
FF-1097 - av1 encoding for amd/amf
This commit is contained in:
@@ -32,6 +32,23 @@ public partial class FfmpegBuilderVideoEncode
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AV1 AMD encoding
|
||||
/// </summary>
|
||||
/// <param name="quality">the quality</param>
|
||||
/// <param name="speed">the speed</param>
|
||||
/// <returns>the encoding parameters</returns>
|
||||
private static IEnumerable<string> AV1_Amd(int quality, string speed)
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
"av1_amf",
|
||||
"-qp", quality.ToString(),
|
||||
"-preset", speed?.EmptyAsNull() ?? "slower",
|
||||
"-spatial-aq", "1"
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AV1 NVIDIA encoding
|
||||
/// </summary>
|
||||
|
||||
+4
@@ -279,9 +279,13 @@ public partial class FfmpegBuilderVideoEncode:FfmpegBuilderNode
|
||||
parameters.AddRange(AV1_CPU(quality, speed));
|
||||
else if(encoder == ENCODER_NVIDIA)
|
||||
parameters.AddRange(AV1_Nvidia(quality, speed));
|
||||
else if(encoder == ENCODER_AMF)
|
||||
parameters.AddRange(AV1_Amd(quality, speed));
|
||||
|
||||
else if (CanUseHardwareEncoding.CanProcess_Nvidia_AV1(args))
|
||||
parameters.AddRange(AV1_Nvidia(quality, speed));
|
||||
else if (CanUseHardwareEncoding.CanProcess_Amd_AV1(args))
|
||||
parameters.AddRange(AV1_Amd(quality, speed));
|
||||
else
|
||||
parameters.AddRange(AV1_CPU(quality, speed));
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ public class CanUseHardwareEncoding:Node
|
||||
new ListOption { Label = "NVIDIA", Value = "###GROUP###" },
|
||||
new ListOption { Label = "NVIDIA H.264", Value = HardwareEncoder.Nvidia_H264 },
|
||||
new ListOption { Label = "NVIDIA H.265", Value = HardwareEncoder.Nvidia_Hevc },
|
||||
new ListOption { Label = "NVIDIA AV1", Value = HardwareEncoder.Nvidia_Hevc },
|
||||
|
||||
new ListOption { Label = "AMD", Value = "###GROUP###" },
|
||||
new ListOption { Label = "AMD H.264", Value = HardwareEncoder.Amd_H264 },
|
||||
@@ -66,6 +67,10 @@ public class CanUseHardwareEncoding:Node
|
||||
Qsv_Hevc = 13,
|
||||
Vaapi_Hevc = 14,
|
||||
VideoToolbox_Hevc = 15,
|
||||
|
||||
Nvidia_AV1 = 21,
|
||||
Amd_AV1 = 22,
|
||||
Qsv_AV1 = 23,
|
||||
}
|
||||
|
||||
public override int Execute(NodeParameters args)
|
||||
@@ -76,9 +81,11 @@ public class CanUseHardwareEncoding:Node
|
||||
{
|
||||
case HardwareEncoder.Nvidia_H264: canProcess = CanProcess_Nvidia_H264(args); break;
|
||||
case HardwareEncoder.Nvidia_Hevc: canProcess = CanProcess_Nvidia_Hevc(args); break;
|
||||
case HardwareEncoder.Nvidia_AV1: canProcess = CanProcess_Nvidia_AV1(args); break;
|
||||
|
||||
case HardwareEncoder.Amd_H264: canProcess = CanProcess_Amd_H264(args); break;
|
||||
case HardwareEncoder.Amd_Hevc: canProcess = CanProcess_Amd_Hevc(args); break;
|
||||
case HardwareEncoder.Amd_AV1: canProcess = CanProcess_Amd_AV1(args); break;
|
||||
|
||||
case HardwareEncoder.Qsv_H264: canProcess = CanProcess_Qsv_H264(args); break;
|
||||
case HardwareEncoder.Qsv_Hevc: canProcess = CanProcess_Qsv_Hevc(args); break;
|
||||
@@ -127,6 +134,13 @@ public class CanUseHardwareEncoding:Node
|
||||
/// <param name="args">the node parameters</param>
|
||||
/// <returns>true if can use it, otherwise false</returns>
|
||||
internal static bool CanProcess_VideoToolbox_H264(NodeParameters args) => CanProcess(args, "h264_videotoolbox");
|
||||
|
||||
/// <summary>
|
||||
/// Checks if this flow runner can use AND AV1 encoder
|
||||
/// </summary>
|
||||
/// <param name="args">the node parameters</param>
|
||||
/// <returns>true if can use it, otherwise false</returns>
|
||||
internal static bool CanProcess_Amd_AV1(NodeParameters args) => CanProcess(args, "hevc_av1");
|
||||
|
||||
/// <summary>
|
||||
/// Checks if this flow runner can use AND HEVC encoder
|
||||
|
||||
Reference in New Issue
Block a user