| | |
| | | } |
| | | |
| | | // Run run a decoder |
| | | func (dec *Decoder) Run() { |
| | | ipc := ipc.NewServer(dec.ctxIPC.ctx, dec.ipcURL) |
| | | func (dec *Decoder) Run(asServer bool) { |
| | | var i *ipc.IPC |
| | | if asServer { |
| | | i = ipc.NewServer(dec.ctxIPC.ctx, dec.ipcURL) |
| | | } else { |
| | | i = ipc.NewClient(dec.ctxIPC.ctx, dec.ipcURL) |
| | | } |
| | | |
| | | gf := goffmpeg.New() |
| | | if gf != nil { |
| | |
| | | go dec.serializeImageInfo(imageChan, dataChan) |
| | | |
| | | gf.ActiveDecoder(func(d *[]byte, w, h *int) { |
| | | |
| | | fmt.Println("get a pic") |
| | | if *w > 0 && *h > 0 { |
| | | i := ImageInfo{*d, *w, *h, dec.cameraID} |
| | | imageChan <- i |
| | |
| | | }) |
| | | gf.Run(dec.streamURL) |
| | | |
| | | ipc.SendFromChannel(dataChan) |
| | | i.SendFromChannel(dataChan) |
| | | } |
| | | |
| | | // Stop stop run decoder, must run in goroutine |