and the video comes into chat
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"mxl-player/internal/source"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
domain := flag.String("domain", "/dev/shm/mxl", "MXL domain")
|
||||
flowID := flag.String("flow", "5fbec3b1-1b0f-417d-9059-8b94a47197ed", "Flow UUID")
|
||||
timeout := flag.Duration("timeout", 200*time.Millisecond, "Per-grain read timeout")
|
||||
count := flag.Int("count", 10, "Stop after N grains (0 = run forever)")
|
||||
flag.Parse()
|
||||
|
||||
src, err := source.Open(*domain, *flowID)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer src.Close()
|
||||
fmt.Printf("format=%s rate=%d/%d stride=%d grainCount=%d\n",
|
||||
src.Format(),
|
||||
src.Rate().Num,
|
||||
src.Rate().Den,
|
||||
src.Stride(),
|
||||
src.GrainCount())
|
||||
stop := make(chan os.Signal, 1)
|
||||
signal.Notify(stop, os.Interrupt, syscall.SIGTERM)
|
||||
|
||||
grains := 0
|
||||
for {
|
||||
select {
|
||||
case <-stop:
|
||||
fmt.Printf("\nstopping: %d grains read\n", grains)
|
||||
return
|
||||
default:
|
||||
}
|
||||
|
||||
f, err := src.Next(*timeout)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
return
|
||||
}
|
||||
lines := uint32(0)
|
||||
if src.Stride() > 0 {
|
||||
lines = f.Size / src.Stride()
|
||||
}
|
||||
fmt.Printf("idx=%d size=%d (%dx%d, %d lines) invalid=%v\n",
|
||||
f.Index, f.Size, f.Width, f.Height, lines, f.Invalid)
|
||||
grains++
|
||||
if *count > 0 && grains >= *count {
|
||||
fmt.Printf("done: %d grains read\n", grains)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user