From 9d7b6313a08f7fae4cf117679c6d3633734ae738 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 13 一月 2020 09:08:08 +0800
Subject: [PATCH] debug

---
 run.go |   85 +++++++++++++++++++++++-------------------
 1 files changed, 47 insertions(+), 38 deletions(-)

diff --git a/run.go b/run.go
index cc5a50b..3e9c399 100644
--- a/run.go
+++ b/run.go
@@ -14,12 +14,11 @@
 
 type channel struct {
 	index int
-	msg   chan protomsg.SdkMessage
+	msgs  *sdkhelper.LockList
 }
 
 //////////////////////////////////////////////////////////////////
 const (
-	cacheFrameNum   = 3
 	trackChnTimeout = time.Duration(10)
 )
 
@@ -66,7 +65,7 @@
 
 	c := &channel{
 		index: index,
-		msg:   make(chan protomsg.SdkMessage, cacheFrameNum),
+		msgs:  sdkhelper.NewLockList(6),
 	}
 
 	f.mapChan[id] = c
@@ -196,9 +195,9 @@
 
 	for _, msg := range msgs {
 		if c, ok := f.channelExist(msg.Cid); ok {
-			f.fnLogger("######push image")
-			c.msg <- msg
-			f.fnLogger("######push over image")
+			f.fnLogger("######push image: ", c.index)
+			c.msgs.Push(msg)
+			f.fnLogger("######push over image: ", c.index)
 		} else {
 
 			nc := f.channelNew(msg.Cid)
@@ -218,7 +217,7 @@
 			ret := f.handle.TrackerResize(imgW, imgH, nc.index)
 			f.fnLogger("ResizeFaceTracker: cid: ", msg.Cid, " chan: ", nc.index, " wXh: ", imgW, "x", imgH, " result:", ret)
 			go f.detectTrackOneChn(nc, out)
-			nc.msg <- msg
+			nc.msgs.Push(msg)
 		}
 	}
 	f.fnLogger("######run over batch images")
@@ -235,41 +234,56 @@
 
 	for {
 		select {
-		case rMsg := <-c.msg:
 
-			if !sdkhelper.ValidRemoteMessage(rMsg, f.typ, f.fnLogger) {
-				sdkhelper.EjectResult(nil, rMsg, out)
-				f.fnLogger("Face!!!!!!SkdMessage Invalid")
-
-				continue
+		case <-time.After(trackChnTimeout * time.Second):
+			f.fnLogger("Timeout to get image, curCid:", curCid)
+			if curCid != "" {
+				f.channelRelease(curCid)
 			}
+			return
+		default:
 
-			i := sdkhelper.UnpackImage(rMsg, f.typ, f.fnLogger)
-			if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 {
-				sdkhelper.EjectResult(nil, rMsg, out)
-				f.fnLogger("Face!!!!!!Unpack Image From SkdMessage Failed")
-
-				continue
+			elems := c.msgs.Drain()
+			var msgs []protomsg.SdkMessage
+			for _, v := range elems {
+				msgs = append(msgs, v.(protomsg.SdkMessage))
 			}
+			for _, rMsg := range msgs {
 
-			curCid = i.Cid
+				if !sdkhelper.ValidRemoteMessage(rMsg, f.typ, f.fnLogger) {
+					sdkhelper.EjectResult(nil, rMsg, out)
+					f.fnLogger("Face!!!!!!SkdMessage Invalid")
 
-			// conv to bgr24 and resize
-			imgW, imgH := int(i.Width), int(i.Height)
+					continue
+				}
 
-			f.fnLogger("######face sdk run")
-			count, data, _ := f.handle.Run(i.Data, imgW, imgH, 3, dtchn)
-			f.fnLogger("######face over sdk run")
+				i := sdkhelper.UnpackImage(rMsg, f.typ, f.fnLogger)
+				if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 {
+					sdkhelper.EjectResult(nil, rMsg, out)
+					f.fnLogger("Face!!!!!!Unpack Image From SkdMessage Failed")
 
-			f.fnLogger("######face eject data")
-			sdkhelper.EjectResult(data, rMsg, out)
-			f.fnLogger("######face over eject data")
+					continue
+				}
 
-			var id, name string
-			if rMsg.Tasklab != nil {
-				id, name = rMsg.Tasklab.Taskid, rMsg.Tasklab.Taskname
+				curCid = i.Cid
+
+				// conv to bgr24 and resize
+				imgW, imgH := int(i.Width), int(i.Height)
+
+				f.fnLogger("######face sdk run: ", dtchn)
+				count, data, _ := f.handle.Run(i.Data, imgW, imgH, 3, dtchn)
+				f.fnLogger("######face over sdk run: ", dtchn)
+
+				f.fnLogger("######face eject data: ", dtchn)
+				sdkhelper.EjectResult(data, rMsg, out)
+				f.fnLogger("######face over eject data: ", dtchn)
+
+				var id, name string
+				if rMsg.Tasklab != nil {
+					id, name = rMsg.Tasklab.Taskid, rMsg.Tasklab.Taskname
+				}
+				f.fnLogger("CAMERAID: ", rMsg.Cid, " TASKID: ", id, " TASKNAME: ", name, " DETECT ", f.typ, " COUNT: ", count)
 			}
-			f.fnLogger("CAMERAID: ", rMsg.Cid, " TASKID: ", id, " TASKNAME: ", name, " DETECT ", f.typ, " COUNT: ", count)
 
 			sc++
 			if sc == 25 {
@@ -283,12 +297,7 @@
 				sc = 0
 				tm = time.Now()
 			}
-		case <-time.After(trackChnTimeout * time.Second):
-			f.fnLogger("Timeout to get image, curCid:", curCid)
-			if curCid != "" {
-				f.channelRelease(curCid)
-			}
-			return
+
 		}
 	}
 }

--
Gitblit v1.8.0