From ed5e1cb438885c152666a542dc0638b516399634 Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期五, 20 三月 2020 17:36:10 +0800
Subject: [PATCH] debug exposed by yolo humantrack

---
 run.go |   61 ++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 16 deletions(-)

diff --git a/run.go b/run.go
index ccc37de..0281af5 100644
--- a/run.go
+++ b/run.go
@@ -143,22 +143,43 @@
         case <-ctx.Done():
             return
         case msg := <-chMsg:
+            // if data, err := proto.Marshal(&msg); err == nil {
+            //     if data == nil {
+            //         s.fnLogger("reid !!!!!! proto.Marshal Failed To Marshal proto.SdkMessage")
+            //         continue
+            //     }
+            //     s.fnLogger("reid~~~~~~MSG Send Back To Humantrack Length:", len(data))
+
+            //     chSnd <- data
+            // } else {
+            //     s.fnLogger("reid !!!!!! proto.Marshal Out Msg Error:", err)
+            // }
+            // continue
+            //////////////////////////////////////////////////////use reid
             if len(msg.Tasklab.Sdkinfos) == 0 || int(msg.Tasklab.Index) >= len(msg.Tasklab.Sdkinfos) {
                 s.fnLogger("reid !!!!!! Recv Msg From Humantrack Error")
+                sendback(&msg, chSnd, s.fnLogger)
                 continue
             }
+
             i := common.UnpackImage(msg, "reid", s.fnLogger)
             if i == nil || i.Data == nil || i.Width <= 0 || i.Height <= 0 {
                 s.fnLogger("reid !!!!!! Unpack Image From Humantrack Msg Failed")
+                sendback(&msg, chSnd, s.fnLogger)
                 continue
             }
 
             sdkInfo := msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)]
+            if sdkInfo.Sdkdata == nil || len(sdkInfo.Sdkdata) < 2 {
+                sendback(&msg, chSnd, s.fnLogger)
+                continue
+            }
             s.fnLogger("reid~~~~~~Recv From Humantrack Image Len:", len(i.Data), "SDK Result Length: ", len(sdkInfo.Sdkdata))
 
             res := &protomsg.HumanTrackResult{}
             if err := proto.Unmarshal(sdkInfo.Sdkdata, res); err != nil {
                 s.fnLogger("reid !!!!!! proto.Unmarshal SDK Result From Humantrack msg Error:", err)
+                sendback(&msg, chSnd, s.fnLogger)
                 continue
             }
 
@@ -166,36 +187,30 @@
 
                 var clen C.int
                 l, t, r, b := C.int(v.RcHuman.Left), C.int(v.RcHuman.Top), C.int(v.RcHuman.Right), C.int(v.RcHuman.Bottom)
+                w, h := int(r-l+1), int(b-t+1)
                 cutImg := C.crop_image(unsafe.Pointer(&i.Data[0]), C.int(i.Width), C.int(i.Height), l, t, r, b, 3, &clen)
-                if cutImg != nil {
-                    dl := int(clen)
-                    data := (*[1 << 26]byte)((*[1 << 26]byte)(cutImg))[:dl:dl]
+                if cutImg != nil && int(clen) == w*h*3 {
+                    data := C.GoBytes(unsafe.Pointer(cutImg), clen)
+                    // dl := int(clen)
+                    // data := (*[1 << 26]byte)((*[1 << 26]byte)(cutImg))[:dl:dl]
 
-                    w, h := int(r-l+1), int(b-t+1)
+                    // w, h := int(r-l+1), int(b-t+1)
                     v.Feature = s.handle.Extract2(unsafe.Pointer(&data[0]), w, h, 3)
                     C.free(cutImg)
+                } else{
+                    s.fnLogger("reid!!!!!!Cut Image Error Len:", clen, "size:", w, "x", h)
                 }
 
             }
 
-            if len(res.Result) > 0 {
+            if res.Result != nil && len(res.Result) > 0 {
                 if out, err := proto.Marshal(res); err == nil {
                     msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)].Sdkdata = out
                     s.fnLogger("reid~~~~~~Send To Humantrack Result Length:", len(out))
                 }
             }
 
-            if data, err := proto.Marshal(&msg); err == nil {
-                if data == nil {
-                    s.fnLogger("reid !!!!!! proto.Marshal Failed To Marshal proto.SdkMessage")
-                    continue
-                }
-                s.fnLogger("reid~~~~~~MSG Send Back To Humantrack Length:", len(data))
-
-                chSnd <- data
-            } else {
-                s.fnLogger("reid !!!!!! proto.Marshal Out Msg Error:", err)
-            }
+            sendback(&msg, chSnd, s.fnLogger)
         default:
 
             time.Sleep(10 * time.Millisecond)
@@ -204,3 +219,17 @@
 
     }
 }
+
+func sendback(msg *protomsg.SdkMessage, ch chan<- []byte, fn func(...interface{})) {
+    if data, err := proto.Marshal(msg); err == nil {
+        if data == nil {
+            fn("reid !!!!!! proto.Marshal Failed To Marshal proto.SdkMessage")
+            return
+        }
+        fn("reid~~~~~~MSG Send Back To Humantrack Length:", len(data))
+
+        ch <- data
+    } else {
+        fn("reid !!!!!! proto.Marshal Out Msg Error:", err)
+    }
+}

--
Gitblit v1.8.0