fix: ensure GPU availability is checked before using hardware acceleration
- Check both preferHardware AND gpuAvailable before using NVENC codecs (h264_nvenc, hevc_nvenc) - Check gpuAvailable before adding CUDA hwaccel flag for input decoding - Fix test assertion to check correct call index for CUDA hwaccel verification This prevents hardware acceleration attempts when GPU is unavailable, addressing code review feedback.
This commit is contained in:
parent
db3acff4f7
commit
00931098c1
2 changed files with 5 additions and 4 deletions
|
|
@ -867,14 +867,14 @@ export async function convert(
|
||||||
extraArgs.push("-c:v", "libaom-av1");
|
extraArgs.push("-c:v", "libaom-av1");
|
||||||
break;
|
break;
|
||||||
case "h264":
|
case "h264":
|
||||||
if (preferHardware) {
|
if (preferHardware && gpuAvailable) {
|
||||||
extraArgs.push("-c:v", "h264_nvenc");
|
extraArgs.push("-c:v", "h264_nvenc");
|
||||||
} else {
|
} else {
|
||||||
extraArgs.push("-c:v", "libx264");
|
extraArgs.push("-c:v", "libx264");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "h265":
|
case "h265":
|
||||||
if (preferHardware) {
|
if (preferHardware && gpuAvailable) {
|
||||||
extraArgs.push("-c:v", "hevc_nvenc");
|
extraArgs.push("-c:v", "hevc_nvenc");
|
||||||
} else {
|
} else {
|
||||||
extraArgs.push("-c:v", "libx265");
|
extraArgs.push("-c:v", "libx265");
|
||||||
|
|
@ -893,7 +893,7 @@ export async function convert(
|
||||||
// This only applies if FFMPEG_ARGS doesn't already specify a hardware accelerator
|
// This only applies if FFMPEG_ARGS doesn't already specify a hardware accelerator
|
||||||
const hasHardwareAccel = ffmpegArgs.includes("-hwaccel");
|
const hasHardwareAccel = ffmpegArgs.includes("-hwaccel");
|
||||||
|
|
||||||
if (preferHardware && !hasHardwareAccel) {
|
if (preferHardware && gpuAvailable && !hasHardwareAccel) {
|
||||||
const supportsCuda = await isCudaSupportedCodec(filePath, fileType, execFile);
|
const supportsCuda = await isCudaSupportedCodec(filePath, fileType, execFile);
|
||||||
if (supportsCuda) {
|
if (supportsCuda) {
|
||||||
ffmpegArgs.push("-hwaccel", "cuda");
|
ffmpegArgs.push("-hwaccel", "cuda");
|
||||||
|
|
|
||||||
|
|
@ -253,7 +253,8 @@ test("does not add CUDA hwaccel for image input when hardware preferred", async
|
||||||
|
|
||||||
console.log = originalConsoleLog;
|
console.log = originalConsoleLog;
|
||||||
|
|
||||||
expect(calls[0]).not.toEqual(expect.arrayContaining(["-hwaccel", "cuda"]));
|
// calls[0] is nvidia-smi, calls[1] is ffprobe, calls[2] is ffmpeg
|
||||||
|
expect(calls[2]).not.toEqual(expect.arrayContaining(["-hwaccel", "cuda"]));
|
||||||
expect(loggedMessage).toBe("stdout: Fake stdout");
|
expect(loggedMessage).toBe("stdout: Fake stdout");
|
||||||
|
|
||||||
delete process.env.FFMPEG_PREFER_HARDWARE;
|
delete process.env.FFMPEG_PREFER_HARDWARE;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue