diff --git a/cmd/wgpu-gen/main.go b/cmd/wgpu-gen/main.go index c713aee..8232f5b 100644 --- a/cmd/wgpu-gen/main.go +++ b/cmd/wgpu-gen/main.go @@ -4,23 +4,81 @@ package main import ( + "fmt" "log" "os" "os/signal" "syscall" "github.com/qvest-digital/go-mxl/mxl" + "github.com/spf13/pflag" flowdef "mxl-pattern-generator/internal/flow-def" "mxl-pattern-generator/internal/generator" ) +type appArgs struct { + showHelp bool + + domain string + videoFlowDefFile string + audioFlowDefFile string + pattern uint8 + listPatterns bool + textOverlay string + + videoWidth uint16 + videoHeight uint16 + videoFPS float32 + + audioChannels uint8 + audioSamplingFreq uint32 +} + +func printUsage() { + fmt.Println("CLI USAGE FUNC") + fmt.Fprintln(os.Stderr, "Usage: ") +} + func main() { + var args appArgs + flagSet := pflag.NewFlagSet("args", pflag.ContinueOnError) + flagSet.SortFlags = false + flagSet.Usage = func() { printUsage() } + // common flags + flagSet.BoolVarP(&args.showHelp, "help", "h", false, "Show help message and exit") + // MXL flags + flagSet.StringVarP(&args.domain, "domain", "d", "", "MXL domain") + flagSet.StringVarP(&args.videoFlowDefFile, "video", "v", "", "Video flow definition JSON file path") + flagSet.StringVarP(&args.audioFlowDefFile, "audio", "a", "", "Audio flow definition JSON file path [TODO]") + // Video pattern flags + flagSet.Uint8VarP(&args.pattern, "pattern", "p", 0, "Video pattern type [TODO]") + flagSet.BoolVar(&args.listPatterns, "list-patterns", false, "List video available video patterns and exit [TODO]") + flagSet.StringVarP(&args.textOverlay, "overlay", "o", "", "Text overlay above video pattern [TODO]") + flagSet.Uint16VarP(&args.videoWidth, "width", "w", 1920, "Video pattern width") + // flagSet.Uint16VarP(&args.videoHeight, "height", "h", 1920, "Video pattern height") + args.videoFPS = *flagSet.Float32P("fps", "f", 1920, "Video pattern FPS") + // Audio pattern flags + flagSet.Uint8VarP(&args.audioChannels, "channel", "c", 2, "Amount of audio channels. Each channel: num * 1kHz [TODO]") + flagSet.Uint32VarP(&args.audioSamplingFreq, "freq", "f", 0, "Sampling frequency of test audio feed [TODO]") + var width, height uint = 1920, 1080 var fpsNum, fpsDen uint = 25, 1 flowUUID := "8f1d2a4b-6c3e-4f5a-9b2c-1d7e8a3f0b5d" domain := "/dev/shm/mxl" + // create domain if not exist + if _, err := os.Stat(domain); err != nil { + err := os.MkdirAll(domain, 0775) + if err != nil { + log.Fatalf("Could not create domain dir: %v", err) + } + } + // TODO: move to parse args + if _, err := mxl.IsTmpFs(domain); err != nil { + log.Fatalf("Domain is not tmpfs dir: %v", err) + } + log.Printf("Go Pattern Gen (wgpu)") log.Printf("Video: %dx%dp%d/%d", width, height, fpsNum, fpsDen) log.Printf("UUID: %s", flowUUID) diff --git a/go.mod b/go.mod index 73293f8..f40f11d 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( github.com/gogpu/gputypes v0.8.0 github.com/gogpu/wgpu v0.34.3 github.com/qvest-digital/go-mxl v1.1.0-rc.4 + github.com/spf13/pflag v1.0.10 ) require ( diff --git a/go.sum b/go.sum index 465c687..a7fecb0 100644 --- a/go.sum +++ b/go.sum @@ -12,5 +12,7 @@ github.com/gogpu/wgpu v0.34.3 h1:oV7K5ueBqxZuvp1w9KpArzj15+eOrm/l9ZnM3jcKbXA= github.com/gogpu/wgpu v0.34.3/go.mod h1:erhaIjD9psJKjHqAhn5MWdJETcACR1NGoqLhkTAHkFM= github.com/qvest-digital/go-mxl v1.1.0-rc.4 h1:qgOGSIv53HYQLTB06m39c6WE2xqMceObViZy5A3rZlA= github.com/qvest-digital/go-mxl v1.1.0-rc.4/go.mod h1:cYzyT+S/AONytsKr/DozzFQP2OrNrg/JsQOSjvwn+Rk= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= diff --git a/linkcheck b/linkcheck deleted file mode 100755 index 4e21740..0000000 Binary files a/linkcheck and /dev/null differ