video backend CLI flag
This commit is contained in:
+32
-5
@@ -43,11 +43,12 @@ type appArgs struct {
|
||||
overlayY int
|
||||
overlayPos string
|
||||
|
||||
videoWidth uint
|
||||
videoHeight uint
|
||||
videoFPS string
|
||||
videoUUID string
|
||||
noVideo bool
|
||||
videoWidth uint
|
||||
videoHeight uint
|
||||
videoFPS string
|
||||
videoUUID string
|
||||
noVideo bool
|
||||
videoBackend string
|
||||
|
||||
audioChannels uint8
|
||||
audioSamplingFreq string
|
||||
@@ -136,6 +137,9 @@ func validateVideoArgs(args *appArgs) error {
|
||||
if args.noVideo {
|
||||
return nil
|
||||
}
|
||||
if _, err := parseVideoBackend(args.videoBackend); err != nil {
|
||||
return err
|
||||
}
|
||||
if !video.HasPattern(args.pattern) {
|
||||
return fmt.Errorf("unknown video pattern %q (use --list-patterns to see available patterns)", args.pattern)
|
||||
}
|
||||
@@ -284,6 +288,7 @@ func addFlags(fs *pflag.FlagSet, args *appArgs) {
|
||||
fs.StringVar(&args.videoFPS, "fps", "25", "Video pattern FPS")
|
||||
fs.StringVar(&args.videoUUID, "video-id", "", "Video UUID. Will be created, if not provided")
|
||||
fs.BoolVar(&args.noVideo, "no-video", false, "Disable video generation; audio must be enabled")
|
||||
fs.StringVar(&args.videoBackend, "backend", string(video.BackendAuto), "Video generator backend: auto, gpu or cpu")
|
||||
// Audio pattern flags
|
||||
fs.Uint8VarP(&args.audioChannels, "channel", "c", 0, "Amount of audio channels. Each channel: num * 1kHz")
|
||||
fs.StringVarP(&args.audioSamplingFreq, "freq", "f", "48", "Sampling frequency of test audio feed in kHz")
|
||||
@@ -319,6 +324,22 @@ func parseArgs(argv []string, stdout, stderr io.Writer) (parseResult, error) {
|
||||
return parseResult{args: args, shouldRun: true}, nil
|
||||
}
|
||||
|
||||
func parseVideoBackend(value string) (video.Backend, error) {
|
||||
if value == "" {
|
||||
return video.BackendAuto, nil
|
||||
}
|
||||
backend := video.Backend(value)
|
||||
switch backend {
|
||||
case video.BackendAuto, video.BackendGPU, video.BackendCPU:
|
||||
return backend, nil
|
||||
default:
|
||||
return "", fmt.Errorf(
|
||||
"unsupported video backend %q (supported: auto, gpu, cpu)",
|
||||
value,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func buildVideoConfig(args appArgs) (*video.Config, error) {
|
||||
if args.noVideo {
|
||||
return nil, nil
|
||||
@@ -370,6 +391,11 @@ func buildVideoConfig(args appArgs) (*video.Config, error) {
|
||||
return nil, fmt.Errorf("unknown video pattern %q", args.pattern)
|
||||
}
|
||||
|
||||
backend, err := parseVideoBackend(args.videoBackend)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &video.Config{
|
||||
Definition: definition,
|
||||
Pattern: args.pattern,
|
||||
@@ -379,6 +405,7 @@ func buildVideoConfig(args appArgs) (*video.Config, error) {
|
||||
Y: args.overlayY,
|
||||
Position: args.overlayPos,
|
||||
},
|
||||
Backend: backend,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user