Merge pull request #559 from webadderallorg/fix/cuda-packaged-audio-gate

fix(export): gate packaged cuda audio fallback
This commit is contained in:
Phạm Thị Minh Hồng
2026-05-22 19:58:17 +07:00
committed by GitHub
2 changed files with 48 additions and 4 deletions
+43
View File
@@ -449,6 +449,49 @@ describe("getExperimentalNvidiaCudaExportSkipReason", () => {
}
});
it("does not use packaged auto-candidate audio bypass when CUDA is explicitly enabled", async () => {
const exportEnvName = "RECORDLY_EXPERIMENTAL_NVIDIA_CUDA_EXPORT";
const forceEnvName = "RECORDLY_NVIDIA_CUDA_FORCE_VIDEO_ONLY";
const allowAudioEnvName = "RECORDLY_NVIDIA_CUDA_ALLOW_AUDIO_EXPORT";
const originalExportEnv = process.env[exportEnvName];
const originalForceEnv = process.env[forceEnvName];
const originalAllowAudioEnv = process.env[allowAudioEnvName];
const originalIsPackaged = electronAppMock.isPackaged;
electronAppMock.isPackaged = true;
process.env[exportEnvName] = "1";
delete process.env[forceEnvName];
delete process.env[allowAudioEnvName];
try {
const reason = await getExperimentalNvidiaCudaExportSkipReason(
createNvidiaCudaSkipOptions({
audioOptions: { audioMode: "copy-source", audioSourcePath: "input.mp4" },
}),
);
expect(reason).toBe(
process.platform === "win32" ? "audio-mode:copy-source" : "not-windows",
);
} finally {
if (originalExportEnv === undefined) {
delete process.env[exportEnvName];
} else {
process.env[exportEnvName] = originalExportEnv;
}
if (originalForceEnv === undefined) {
delete process.env[forceEnvName];
} else {
process.env[forceEnvName] = originalForceEnv;
}
if (originalAllowAudioEnv === undefined) {
delete process.env[allowAudioEnvName];
} else {
process.env[allowAudioEnvName] = originalAllowAudioEnv;
}
electronAppMock.isPackaged = originalIsPackaged;
}
});
it("skips packaged CUDA auto-candidates when Electron reports no NVIDIA GPU", async () => {
const reason = await withPackagedCudaCandidate(
{ gpuDevice: [{ vendorId: 0x8086, deviceString: "Intel UHD Graphics" }] },
+5 -4
View File
@@ -2010,15 +2010,16 @@ export async function getExperimentalNvidiaCudaExportSkipReason(
return "not-windows";
}
const explicitCuda = isExplicitNvidiaCudaExportEnabled();
const packagedAutoCandidate = isPackagedNvidiaCudaExportAutoCandidateEnabled();
if (!explicitCuda && !packagedAutoCandidate) {
const packagedAutoCandidateEnabled = isPackagedNvidiaCudaExportAutoCandidateEnabled();
const packagedAutoCandidateActive = isPackagedNvidiaCudaExportAutoCandidateActive();
if (!explicitCuda && !packagedAutoCandidateEnabled) {
return "env-disabled";
}
if (!options.experimentalWindowsGpuCompositor) {
return "windows-gpu-compositor-disabled";
}
if (packagedAutoCandidate && !explicitCuda) {
if (packagedAutoCandidateActive) {
if (!(await resolveExperimentalNvidiaCudaExportScriptPath())) {
return "cuda-wrapper-unavailable";
}
@@ -2029,7 +2030,7 @@ export async function getExperimentalNvidiaCudaExportSkipReason(
return getNvidiaCudaAudioExportSkipReason(options.audioOptions?.audioMode, {
allowValidatedFallbackCandidate:
packagedAutoCandidate || isNvidiaCudaForceVideoOnlyEnabled(),
packagedAutoCandidateActive || isNvidiaCudaForceVideoOnlyEnabled(),
});
}