Files
photoprism/internal/ffmpeg/encode/default.go
2025-03-10 14:30:25 +01:00

32 lines
845 B
Go

package encode
import (
"os"
"strings"
"github.com/photoprism/photoprism/pkg/fs"
)
// defaultAvcEncoder is the default FFmpeg AVC encoder if it has already been determined.
var defaultAvcEncoder = Encoder("")
// DefaultAvcEncoder determines and returns the default FFmpeg AVC encoder type:
func DefaultAvcEncoder() Encoder {
if defaultAvcEncoder != "" {
return defaultAvcEncoder
}
switch {
// Default to Nvidia AVC encoder if the NVIDIA_DRIVER_CAPABILITIES variable is set and contains "video":
case fs.DeviceExists("/dev/nvidia0") &&
strings.Contains(os.Getenv("NVIDIA_DRIVER_CAPABILITIES"), "video") &&
!strings.Contains(os.Getenv("PHOTOPRISM_INIT"), "ffmpeg"):
defaultAvcEncoder = NvidiaAvc
// Otherwise, use the standard software AVC encoder:
default:
defaultAvcEncoder = SoftwareAvc
}
return defaultAvcEncoder
}