Fallback to software when auto hardware accel fails
This commit is contained in:
parent
20a2fa7110
commit
bd58a3c817
13
main.go
13
main.go
|
|
@ -5892,6 +5892,7 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
|
||||||
var errorMsg error
|
var errorMsg error
|
||||||
|
|
||||||
// Check if this is a hardware encoding failure
|
// Check if this is a hardware encoding failure
|
||||||
|
resolvedAccel := effectiveHardwareAccel(s.convert)
|
||||||
isHardwareFailure := strings.Contains(stderrOutput, "No capable devices found") ||
|
isHardwareFailure := strings.Contains(stderrOutput, "No capable devices found") ||
|
||||||
strings.Contains(stderrOutput, "Cannot load") ||
|
strings.Contains(stderrOutput, "Cannot load") ||
|
||||||
strings.Contains(stderrOutput, "not available") &&
|
strings.Contains(stderrOutput, "not available") &&
|
||||||
|
|
@ -5901,8 +5902,16 @@ func (s *appState) startConvert(status *widget.Label, btn, cancelBtn *widget.But
|
||||||
strings.Contains(stderrOutput, "vaapi") ||
|
strings.Contains(stderrOutput, "vaapi") ||
|
||||||
strings.Contains(stderrOutput, "videotoolbox"))
|
strings.Contains(stderrOutput, "videotoolbox"))
|
||||||
|
|
||||||
if isHardwareFailure && s.convert.HardwareAccel != "none" && s.convert.HardwareAccel != "" {
|
if isHardwareFailure && resolvedAccel != "none" && resolvedAccel != "" {
|
||||||
errorMsg = fmt.Errorf("Hardware encoding (%s) failed - no compatible hardware found.\n\nPlease disable hardware acceleration in the conversion settings and try again with software encoding.\n\nFFmpeg output:\n%s", s.convert.HardwareAccel, stderrOutput)
|
chosen := s.convert.HardwareAccel
|
||||||
|
if chosen == "" {
|
||||||
|
chosen = "auto"
|
||||||
|
}
|
||||||
|
if strings.EqualFold(chosen, "auto") {
|
||||||
|
// Auto failed; fall back to software for next runs
|
||||||
|
s.convert.HardwareAccel = "none"
|
||||||
|
}
|
||||||
|
errorMsg = fmt.Errorf("Hardware encoding (%s→%s) failed - no compatible hardware found.\n\nSwitched hardware acceleration to 'none'. Please try again (software encoding).\n\nFFmpeg output:\n%s", chosen, resolvedAccel, stderrOutput)
|
||||||
} else {
|
} else {
|
||||||
baseMsg := "convert failed: " + err.Error()
|
baseMsg := "convert failed: " + err.Error()
|
||||||
if errorExplanation != "" {
|
if errorExplanation != "" {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user