| | |
| | | */ |
| | | import "C" |
| | | import ( |
| | | "analysis/goconv" |
| | | "analysis/logo" |
| | | "analysis/work" |
| | | "context" |
| | | "time" |
| | | "unsafe" |
| | | |
| | | "analysis/gosdk" |
| | | |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/valib/gosdk.git" |
| | | "github.com/gogo/protobuf/proto" |
| | | ) |
| | | |
| | |
| | | select { |
| | | case <-ctx.Done(): |
| | | return |
| | | default: |
| | | rMsg := <-in |
| | | case rMsg := <-in: |
| | | if !validRemoteMessage(rMsg, typ) { |
| | | logo.Errorln("face track validremotemessage invalid") |
| | | ejectResult(nil, rMsg, out) |
| | |
| | | go e.detectTrackOneChn(ctx, e.ftrackChans[rMsg.Msg.Cid], out, typ, e.ftrackChannels[rMsg.Msg.Cid]) |
| | | e.ftrackChans[rMsg.Msg.Cid] <- rMsg |
| | | } |
| | | default: |
| | | time.Sleep(100 * time.Millisecond) |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | for { |
| | | select { |
| | | case <-ctx.Done(): |
| | | goconv.Free() |
| | | return |
| | | |
| | | case rMsg := <-in: |
| | | |
| | | if !validRemoteMessage(rMsg, typ) { |
| | |
| | | |
| | | // conv to bgr24 and resize |
| | | imgW, imgH := int(i.Width), int(i.Height) |
| | | bgrData := goconv.YUV2BGR(i.Data, imgW, imgH) |
| | | if bgrData == nil { |
| | | ejectResult(nil, rMsg, out) |
| | | continue |
| | | } |
| | | img := gosdk.SDKImage{Data: bgrData, Width: imgW, Height: imgH} |
| | | |
| | | img := gosdk.SDKImage{Data: i.Data, Width: imgW, Height: imgH} |
| | | |
| | | detect := gosdk.FaceTrackSimple(img, dtchn) |
| | | |