From 0786441ed1828c411a16d6648baee753a02a3ddb Mon Sep 17 00:00:00 2001
From: zhangmeng <zhangmeng@aiotlink.com>
Date: 星期二, 25 二月 2020 11:24:16 +0800
Subject: [PATCH] expand tabs to 4 spaces
---
goreid.go | 62 ++--
run.go | 258 ++++++++--------
csrc/reid.cpp | 4
rpc/recv.go | 182 ++++++------
common/helper.go | 118 +++---
common/reboot.go | 82 ++--
rpc/send.go | 158 +++++-----
7 files changed, 432 insertions(+), 432 deletions(-)
diff --git a/common/helper.go b/common/helper.go
index 200e847..9734eb9 100644
--- a/common/helper.go
+++ b/common/helper.go
@@ -1,96 +1,96 @@
package common
import (
- "context"
- "encoding/json"
- "fmt"
- "io/ioutil"
- "strconv"
- "time"
+ "context"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "strconv"
+ "time"
- "basic.com/pubsub/protomsg.git"
- "github.com/gogo/protobuf/proto"
+ "basic.com/pubsub/protomsg.git"
+ "github.com/gogo/protobuf/proto"
)
// GetIpcAddress get ipc
func GetIpcAddress(shm bool, id string) string {
- if shm {
- return id
- }
- return `ipc:///tmp/` + id + `.ipc`
+ if shm {
+ return id
+ }
+ return `ipc:///tmp/` + id + `.ipc`
}
// SubConfig sub
type SubConfig struct {
- SoFile string `json:"so_file_path"`
- Env string `json:"runtime"`
- Param map[string]string `json:"param"`
+ SoFile string `json:"so_file_path"`
+ Env string `json:"runtime"`
+ Param map[string]string `json:"param"`
}
// SdkConfig sdk
type SdkConfig struct {
- SoFile string `json:"so_file_path"`
- Env string `json:"runtime"`
- Param map[string]string `json:"param"`
- Sub *SubConfig `json:"sub"`
+ SoFile string `json:"so_file_path"`
+ Env string `json:"runtime"`
+ Param map[string]string `json:"param"`
+ Sub *SubConfig `json:"sub"`
}
// ReadConfig conf
func ReadConfig(file string) (SdkConfig, error) {
- data, err := ioutil.ReadFile(file)
- if err != nil {
- return SdkConfig{}, fmt.Errorf("READ SDK CONFIG FILE %s ERROR", file)
- }
+ data, err := ioutil.ReadFile(file)
+ if err != nil {
+ return SdkConfig{}, fmt.Errorf("READ SDK CONFIG FILE %s ERROR", file)
+ }
- //璇诲彇鐨勬暟鎹负json鏍煎紡锛岄渶瑕佽繘琛岃В鐮�
- var v SdkConfig
- err = json.Unmarshal(data, &v)
+ //璇诲彇鐨勬暟鎹负json鏍煎紡锛岄渶瑕佽繘琛岃В鐮�
+ var v SdkConfig
+ err = json.Unmarshal(data, &v)
- return v, err
+ return v, err
}
// Atoi atoi
func Atoi(s string) int {
- i, _ := strconv.Atoi(s)
- return i
+ i, _ := strconv.Atoi(s)
+ return i
}
// UnserilizeProto un
func UnserilizeProto(ctx context.Context, data <-chan []byte, out chan<- protomsg.SdkMessage, fn func(...interface{})) {
- for {
- select {
- case <-ctx.Done():
- return
- case d := <-data:
- if len(d) < 100 {
- continue
- }
- msg := protomsg.SdkMessage{}
- if err := proto.Unmarshal(d, &msg); err != nil {
- fn("UnserilizeProto Unmarshal msg 澶勭悊寮傚父 Error:", err)
- continue
- }
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ case d := <-data:
+ if len(d) < 100 {
+ continue
+ }
+ msg := protomsg.SdkMessage{}
+ if err := proto.Unmarshal(d, &msg); err != nil {
+ fn("UnserilizeProto Unmarshal msg 澶勭悊寮傚父 Error:", err)
+ continue
+ }
- out <- msg
+ out <- msg
- default:
- time.Sleep(10 * time.Millisecond)
- }
- }
+ default:
+ time.Sleep(10 * time.Millisecond)
+ }
+ }
}
// UnpackImage unpack
func UnpackImage(msg protomsg.SdkMessage, fnName string, fn func(...interface{})) *protomsg.Image {
- // 鍙嶅簭鍒楀寲鏁版嵁寰楀埌sdk鍏ュ弬
- i := &protomsg.Image{}
- err := proto.Unmarshal(msg.Data, i)
- if err != nil {
- fn(fnName, " protobuf Unmarshal decode CameraImage error: ", err.Error())
- return nil
- }
- if i.Data == nil {
- fn(fnName, " protomsg.Image data null")
- return nil
- }
- return i
+ // 鍙嶅簭鍒楀寲鏁版嵁寰楀埌sdk鍏ュ弬
+ i := &protomsg.Image{}
+ err := proto.Unmarshal(msg.Data, i)
+ if err != nil {
+ fn(fnName, " protobuf Unmarshal decode CameraImage error: ", err.Error())
+ return nil
+ }
+ if i.Data == nil {
+ fn(fnName, " protomsg.Image data null")
+ return nil
+ }
+ return i
}
diff --git a/common/reboot.go b/common/reboot.go
index e4a9e4c..61ba8ce 100644
--- a/common/reboot.go
+++ b/common/reboot.go
@@ -1,64 +1,64 @@
package common
import (
- "context"
- "os"
- "sync"
- "time"
+ "context"
+ "os"
+ "sync"
+ "time"
)
// Disturber stop
type Disturber struct {
- mtx sync.Mutex
- live bool
- until int
- maxTry int
+ mtx sync.Mutex
+ live bool
+ until int
+ maxTry int
}
// NewDisturber new
func NewDisturber(maxTry int) *Disturber {
- return &Disturber{
- live: true,
- until: 0,
- maxTry: maxTry,
- }
+ return &Disturber{
+ live: true,
+ until: 0,
+ maxTry: maxTry,
+ }
}
// Prevent prevent
func (d *Disturber) Prevent() {
- d.mtx.Lock()
- defer d.mtx.Unlock()
- d.live = true
+ d.mtx.Lock()
+ defer d.mtx.Unlock()
+ d.live = true
}
// MaybeReboot reboot
func (d *Disturber) MaybeReboot(ctx context.Context, fn func(...interface{})) {
- d.live = true
- for {
- select {
- case <-ctx.Done():
- return
- default:
- d.mtx.Lock()
- running := d.live
- d.mtx.Unlock()
+ d.live = true
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ d.mtx.Lock()
+ running := d.live
+ d.mtx.Unlock()
- if running {
- d.until = 0
+ if running {
+ d.until = 0
- d.mtx.Lock()
- d.live = false
- d.mtx.Unlock()
+ d.mtx.Lock()
+ d.live = false
+ d.mtx.Unlock()
- } else {
- d.until++
- fn("!!!!!!No Running: ", d.until)
- if d.until > d.maxTry {
- fn("!!!!!!Too Long Running, Reboot: ", d.maxTry)
- os.Exit(0)
- }
- }
- time.Sleep(time.Second)
- }
- }
+ } else {
+ d.until++
+ fn("!!!!!!No Running: ", d.until)
+ if d.until > d.maxTry {
+ fn("!!!!!!Too Long Running, Reboot: ", d.maxTry)
+ os.Exit(0)
+ }
+ }
+ time.Sleep(time.Second)
+ }
+ }
}
diff --git a/csrc/reid.cpp b/csrc/reid.cpp
index f894176..3b34bf4 100644
--- a/csrc/reid.cpp
+++ b/csrc/reid.cpp
@@ -11,8 +11,8 @@
,start_(false)
{
if(init(gpu_index, module_path) < 0){
- throw std::runtime_error("init swscale error");
- }
+ throw std::runtime_error("init swscale error");
+ }
}
reid::~reid()
diff --git a/goreid.go b/goreid.go
index 2784da5..8fd64bb 100644
--- a/goreid.go
+++ b/goreid.go
@@ -20,15 +20,15 @@
// ReID id
type ReID struct {
- handle unsafe.Pointer
+ handle unsafe.Pointer
}
// NewSDK new reid
func NewSDK(gpu int, module string) *ReID {
- cmodule := C.CString(module)
- defer C.free(unsafe.Pointer(cmodule))
- h := C.create_reid(C.int(gpu), cmodule)
- return &ReID{h}
+ cmodule := C.CString(module)
+ defer C.free(unsafe.Pointer(cmodule))
+ h := C.create_reid(C.int(gpu), cmodule)
+ return &ReID{h}
}
// Free free
@@ -38,42 +38,42 @@
// Extract extract
// func (r *ReID) Extract(img []byte) []float32 {
-// var fSize C.int
-// cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize)
-// if cfeat == nil {
-// return nil
-// }
+// var fSize C.int
+// cfeat := C.extract(r.handle, (*C.uchar)(unsafe.Pointer(&img[0])), &fSize)
+// if cfeat == nil {
+// return nil
+// }
-// ret := make([]float32, 0, fSize)
-// for i := 0; i < int(fSize); i++ {
-// r := C.get_val(cfeat, C.int(i))
-// ret = append(ret, float32(r))
-// }
-// C.free(unsafe.Pointer(cfeat))
-// return ret
+// ret := make([]float32, 0, fSize)
+// for i := 0; i < int(fSize); i++ {
+// r := C.get_val(cfeat, C.int(i))
+// ret = append(ret, float32(r))
+// }
+// C.free(unsafe.Pointer(cfeat))
+// return ret
// }
// Extract2 extract
func (r *ReID) Extract2(img unsafe.Pointer, w, h, c int) []float32 {
- var fSize C.int
- cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize)
- if cfeat == nil {
- return nil
- }
+ var fSize C.int
+ cfeat := C.extract(r.handle, (*C.uchar)(img), C.int(w), C.int(h), C.int(c), &fSize)
+ if cfeat == nil {
+ return nil
+ }
- ret := make([]float32, 0, fSize)
- for i := 0; i < int(fSize); i++ {
- r := C.get_val(cfeat, C.int(i))
- ret = append(ret, float32(r))
- }
- C.free(unsafe.Pointer(cfeat))
- return ret
+ ret := make([]float32, 0, fSize)
+ for i := 0; i < int(fSize); i++ {
+ r := C.get_val(cfeat, C.int(i))
+ ret = append(ret, float32(r))
+ }
+ C.free(unsafe.Pointer(cfeat))
+ return ret
}
// Compare compare
func (r *ReID) Compare(feat1, feat2 []float32) float32 {
- p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2)))
- return float32(p)
+ p := C.compare(r.handle, (*C.float)(unsafe.Pointer(&feat1)), (*C.float)(unsafe.Pointer(&feat2)))
+ return float32(p)
}
diff --git a/rpc/recv.go b/rpc/recv.go
index aced578..a6bb22e 100644
--- a/rpc/recv.go
+++ b/rpc/recv.go
@@ -1,123 +1,123 @@
package rpc
import (
- "context"
+ "context"
- "time"
+ "time"
- "basic.com/valib/deliver.git"
+ "basic.com/valib/deliver.git"
)
// Reciever recv from ipc
type Reciever struct {
- ctx context.Context
- ipcURL string
- out chan<- []byte
+ ctx context.Context
+ ipcURL string
+ out chan<- []byte
- shm bool
- fnLogger func(...interface{})
+ shm bool
+ fnLogger func(...interface{})
}
// NewReciever new recv
func NewReciever(url string, out chan<- []byte, shm bool, fn func(...interface{})) *Reciever {
- return &Reciever{
- ipcURL: url,
- out: out,
- shm: shm,
- fnLogger: fn,
- }
+ return &Reciever{
+ ipcURL: url,
+ out: out,
+ shm: shm,
+ fnLogger: fn,
+ }
}
// Run run a IPC client
func (r *Reciever) Run(ctx context.Context) {
- if r.shm {
- r.runShm(ctx)
- } else {
- r.run(ctx, deliver.NewServer(deliver.PushPull, r.ipcURL))
- }
+ if r.shm {
+ r.runShm(ctx)
+ } else {
+ r.run(ctx, deliver.NewServer(deliver.PushPull, r.ipcURL))
+ }
}
func (r *Reciever) run(ctx context.Context, i deliver.Deliver) {
- count := 0
+ count := 0
- for {
- select {
- case <-ctx.Done():
- i.Close()
- return
- default:
+ for {
+ select {
+ case <-ctx.Done():
+ i.Close()
+ return
+ default:
- if r.shm {
- if d, err := i.Recv(); err != nil {
- i.Close()
- r.fnLogger("Reciever RECV From:", r.ipcURL, " ERROR: ", err)
+ if r.shm {
+ if d, err := i.Recv(); err != nil {
+ i.Close()
+ r.fnLogger("Reciever RECV From:", r.ipcURL, " ERROR: ", err)
- c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL)
- loopR:
- for {
- select {
- case <-ctx.Done():
- return
- default:
- if err == nil {
- break loopR
- }
- time.Sleep(time.Second)
- c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL)
- r.fnLogger("Recver ANALYSIS CREATE:", r.ipcURL, " FAILED : ", err)
- }
- }
- i = c
- r.fnLogger("Reciever CREATE SHM:", r.ipcURL)
- } else {
- if d != nil {
- count++
- if count > 10 {
- count = 0
- r.fnLogger("~~~shm recv image:", len(d))
- }
- if len(d) > 2 {
- r.out <- d
- }
- }
- }
- } else {
- if msg, err := i.Recv(); err != nil {
- // logo.Errorln("recv error : ", err, " url: ", r.ipcURL)
- } else {
- count++
- if count > 10 {
- count = 0
- r.fnLogger("~~~mangos recv image:", len(msg))
- }
- if len(msg) > 2 {
- r.out <- msg
- }
- }
- }
- time.Sleep(10 * time.Millisecond)
- }
- }
+ c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL)
+ loopR:
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ if err == nil {
+ break loopR
+ }
+ time.Sleep(time.Second)
+ c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL)
+ r.fnLogger("Recver ANALYSIS CREATE:", r.ipcURL, " FAILED : ", err)
+ }
+ }
+ i = c
+ r.fnLogger("Reciever CREATE SHM:", r.ipcURL)
+ } else {
+ if d != nil {
+ count++
+ if count > 10 {
+ count = 0
+ r.fnLogger("~~~shm recv image:", len(d))
+ }
+ if len(d) > 2 {
+ r.out <- d
+ }
+ }
+ }
+ } else {
+ if msg, err := i.Recv(); err != nil {
+ // logo.Errorln("recv error : ", err, " url: ", r.ipcURL)
+ } else {
+ count++
+ if count > 10 {
+ count = 0
+ r.fnLogger("~~~mangos recv image:", len(msg))
+ }
+ if len(msg) > 2 {
+ r.out <- msg
+ }
+ }
+ }
+ time.Sleep(10 * time.Millisecond)
+ }
+ }
}
func (r *Reciever) runShm(ctx context.Context) {
- c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL)
+ c, err := deliver.NewServerWithError(deliver.Shm, r.ipcURL)
loopRBegin:
- for {
- select {
- case <-ctx.Done():
- return
- default:
- if err == nil {
- break loopRBegin
- }
- time.Sleep(1 * time.Second)
- c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL)
- r.fnLogger("Recver CLIENT CREATE", r.ipcURL, "FAILED : ", err)
- }
- }
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ if err == nil {
+ break loopRBegin
+ }
+ time.Sleep(1 * time.Second)
+ c, err = deliver.NewServerWithError(deliver.Shm, r.ipcURL)
+ r.fnLogger("Recver CLIENT CREATE", r.ipcURL, "FAILED : ", err)
+ }
+ }
- r.run(ctx, c)
+ r.run(ctx, c)
}
diff --git a/rpc/send.go b/rpc/send.go
index c0d4b5c..d9f7b00 100644
--- a/rpc/send.go
+++ b/rpc/send.go
@@ -1,112 +1,112 @@
package rpc
import (
- "context"
- "time"
+ "context"
+ "time"
- "basic.com/valib/deliver.git"
+ "basic.com/valib/deliver.git"
)
// Sender decoder ingo
type Sender struct {
- ipcURL string
- in <-chan []byte
- shm bool
+ ipcURL string
+ in <-chan []byte
+ shm bool
- fnLogger func(...interface{})
+ fnLogger func(...interface{})
}
// NewSender Sender
func NewSender(ipcURL string, in <-chan []byte, shm bool, fn func(...interface{})) *Sender {
- return &Sender{
- ipcURL: ipcURL,
- in: in,
- shm: shm,
- fnLogger: fn,
- }
+ return &Sender{
+ ipcURL: ipcURL,
+ in: in,
+ shm: shm,
+ fnLogger: fn,
+ }
}
// Run run a IPC producer
func (s *Sender) Run(ctx context.Context) {
- if s.shm {
- s.runShm(ctx)
- } else {
- i := deliver.NewServer(deliver.PushPull, s.ipcURL)
- if i == nil {
- s.fnLogger("sender 2 pubsub nng create error")
- return
- }
- s.run(ctx, i)
- }
+ if s.shm {
+ s.runShm(ctx)
+ } else {
+ i := deliver.NewServer(deliver.PushPull, s.ipcURL)
+ if i == nil {
+ s.fnLogger("sender 2 pubsub nng create error")
+ return
+ }
+ s.run(ctx, i)
+ }
}
func (s *Sender) run(ctx context.Context, i deliver.Deliver) {
- for {
- select {
- case <-ctx.Done():
- i.Close()
- return
- case d := <-s.in:
+ for {
+ select {
+ case <-ctx.Done():
+ i.Close()
+ return
+ case d := <-s.in:
- if s.shm {
- if err := i.Send(d); err != nil {
- i.Close()
- s.fnLogger("SENDER To:", s.ipcURL, " ERROR: ", err)
+ if s.shm {
+ if err := i.Send(d); err != nil {
+ i.Close()
+ s.fnLogger("SENDER To:", s.ipcURL, " ERROR: ", err)
- c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL)
- loopS:
- for {
- select {
- case <-ctx.Done():
- return
- default:
- if err == nil {
- break loopS
- }
- time.Sleep(time.Second)
- c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL)
- s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, " FAILED : ", err)
- }
+ c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL)
+ loopS:
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ if err == nil {
+ break loopS
+ }
+ time.Sleep(time.Second)
+ c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL)
+ s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, " FAILED : ", err)
+ }
- }
+ }
- i = c
- s.fnLogger("Sender Create Shm:", s.ipcURL)
- } else {
+ i = c
+ s.fnLogger("Sender Create Shm:", s.ipcURL)
+ } else {
- }
- } else {
- err := i.Send(d)
- if err != nil {
- // logo.Errorln("error sender 2 pubsub: ", err)
- } else {
- s.fnLogger("mangos send to pubsub len: ", len(d))
- }
- }
- default:
- time.Sleep(10 * time.Millisecond)
- }
- }
+ }
+ } else {
+ err := i.Send(d)
+ if err != nil {
+ // logo.Errorln("error sender 2 pubsub: ", err)
+ } else {
+ s.fnLogger("mangos send to pubsub len: ", len(d))
+ }
+ }
+ default:
+ time.Sleep(10 * time.Millisecond)
+ }
+ }
}
func (s *Sender) runShm(ctx context.Context) {
- c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL)
+ c, err := deliver.NewServerWithError(deliver.Shm, s.ipcURL)
loopSBegin:
- for {
- select {
- case <-ctx.Done():
- return
- default:
- if err == nil {
- break loopSBegin
- }
- time.Sleep(1 * time.Second)
- c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL)
- s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, "FAILED : ", err)
- }
- }
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ default:
+ if err == nil {
+ break loopSBegin
+ }
+ time.Sleep(1 * time.Second)
+ c, err = deliver.NewServerWithError(deliver.Shm, s.ipcURL)
+ s.fnLogger("Sender CLIENT CREATE:", s.ipcURL, "FAILED : ", err)
+ }
+ }
- s.run(ctx, c)
+ s.run(ctx, c)
}
diff --git a/run.go b/run.go
index 9e4ee02..421c79a 100644
--- a/run.go
+++ b/run.go
@@ -5,29 +5,29 @@
#include <string.h>
void* crop_image(void *vsrc, int srcW, int srcH, int x0, int y0, int x1, int y1, int channel, int *length)
{
- if (x0 < 0) x0 = 0;
- if (x0 > srcW) x0 = srcW-1;
- if (x1 < 0) x1 = 0;
- if (x1 > srcW) x1 = srcW-1;
+ if (x0 < 0) x0 = 0;
+ if (x0 > srcW) x0 = srcW-1;
+ if (x1 < 0) x1 = 0;
+ if (x1 > srcW) x1 = srcW-1;
- if (y0 < 0) y0 = 0;
- if (y0 > srcH) y0 = srcH-1;
- if (y1 < 0) y1 = 0;
- if (y1 > srcH) y1 = srcH-1;
+ if (y0 < 0) y0 = 0;
+ if (y0 > srcH) y0 = srcH-1;
+ if (y1 < 0) y1 = 0;
+ if (y1 > srcH) y1 = srcH-1;
- if (x1 - x0 <= 0 || y1 - y0 <= 0) return NULL;
+ if (x1 - x0 <= 0 || y1 - y0 <= 0) return NULL;
- if (x1-x0 > srcW) x1 = srcW-x0;
- if (y1-y0 > srcH) y1 = srcH-y0;
+ if (x1-x0 > srcW) x1 = srcW-x0;
+ if (y1-y0 > srcH) y1 = srcH-y0;
unsigned char *src = (unsigned char*)vsrc;
int destW = x1 - x0 + 1;
- int destH = y1 - y0 + 1;
+ int destH = y1 - y0 + 1;
- *length = channel * destW * destH;
- unsigned char * desData = (unsigned char*)malloc(*length);
+ *length = channel * destW * destH;
+ unsigned char * desData = (unsigned char*)malloc(*length);
int i = 0;
int destIdy = 0;
@@ -38,169 +38,169 @@
memcpy(&(desData[destIdy * destW * channel]), &(src[(i * srcW + x0) * channel]),sizeof(char) * channel * destW);
}
- return desData;
+ return desData;
}*/
import "C"
import (
- "context"
- "time"
- "unsafe"
+ "context"
+ "time"
+ "unsafe"
- "reid/rpc"
+ "reid/rpc"
- "reid/common"
+ "reid/common"
- "basic.com/valib/gogpu.git"
+ "basic.com/valib/gogpu.git"
- "basic.com/pubsub/protomsg.git"
+ "basic.com/pubsub/protomsg.git"
- "github.com/gogo/protobuf/proto"
+ "github.com/gogo/protobuf/proto"
)
type reid struct {
- handle *ReID
- fnLogger func(...interface{})
+ handle *ReID
+ fnLogger func(...interface{})
- gpu int
- ipc string
+ gpu int
+ ipc string
}
// Create Reid
func Create(config string, typ, id string, gpu int, shm bool, fn func(...interface{}), reserved map[string]interface{}) interface{} {
- cfg, err := common.ReadConfig(config)
- if err != nil {
- fn("Reid SDK Create Error When Read Config: ", err)
- return nil
- }
+ cfg, err := common.ReadConfig(config)
+ if err != nil {
+ fn("Reid SDK Create Error When Read Config: ", err)
+ return nil
+ }
- sModel, sGPU, sIPC :=
- "reid-model",
- "gpu-memory",
- "ipc-url"
+ sModel, sGPU, sIPC :=
+ "reid-model",
+ "gpu-memory",
+ "ipc-url"
- params := []string{sModel, sGPU, sIPC}
+ params := []string{sModel, sGPU, sIPC}
- for _, v := range params {
- if _, ok := cfg.Param[v]; !ok {
- fn("Reid SDK Create Error Because of Param Not Found: ", v)
- return nil
- }
- }
+ for _, v := range params {
+ if _, ok := cfg.Param[v]; !ok {
+ fn("Reid SDK Create Error Because of Param Not Found: ", v)
+ return nil
+ }
+ }
- gpuM := common.Atoi(cfg.Param[sGPU])
+ gpuM := common.Atoi(cfg.Param[sGPU])
- rGPU := gpu
+ rGPU := gpu
- if rGPU == -1 {
- rGPU = gogpu.ValidGPU(gpuM + 512)
- }
+ if rGPU == -1 {
+ rGPU = gogpu.ValidGPU(gpuM + 512)
+ }
- handle := NewSDK(rGPU, cfg.Param[sModel])
- if handle == nil {
- fn("Reid SDK Create Error When New SDK")
- return nil
- }
+ handle := NewSDK(rGPU, cfg.Param[sModel])
+ if handle == nil {
+ fn("Reid SDK Create Error When New SDK")
+ return nil
+ }
- return &reid{
- handle: handle,
- fnLogger: fn,
+ return &reid{
+ handle: handle,
+ fnLogger: fn,
- gpu: rGPU,
- ipc: cfg.Param[sIPC],
- }
+ gpu: rGPU,
+ ipc: cfg.Param[sIPC],
+ }
}
// Run run
func Run(ctx context.Context, i interface{}) {
- s := i.(*reid)
+ s := i.(*reid)
- const (
- postPull = `_2`
- postPush = `_1`
- )
+ const (
+ postPull = `_2`
+ postPush = `_1`
+ )
- ipcSnd := s.ipc + postPush
- ipcRcv := s.ipc + postPull
+ ipcSnd := s.ipc + postPush
+ ipcRcv := s.ipc + postPull
- sndURL := common.GetIpcAddress(true, ipcSnd)
- rcvURL := common.GetIpcAddress(true, ipcRcv)
+ sndURL := common.GetIpcAddress(true, ipcSnd)
+ rcvURL := common.GetIpcAddress(true, ipcRcv)
- chSnd := make(chan []byte, 3)
- chRcv := make(chan []byte, 3)
+ chSnd := make(chan []byte, 3)
+ chRcv := make(chan []byte, 3)
- recv := rpc.NewReciever(rcvURL, chRcv, true, s.fnLogger)
- go recv.Run(ctx)
+ recv := rpc.NewReciever(rcvURL, chRcv, true, s.fnLogger)
+ go recv.Run(ctx)
- chMsg := make(chan protomsg.SdkMessage, 3)
- go common.UnserilizeProto(ctx, chRcv, chMsg, s.fnLogger)
+ chMsg := make(chan protomsg.SdkMessage, 3)
+ go common.UnserilizeProto(ctx, chRcv, chMsg, s.fnLogger)
- send := rpc.NewSender(sndURL, chSnd, true, s.fnLogger)
- go send.Run(ctx)
+ send := rpc.NewSender(sndURL, chSnd, true, s.fnLogger)
+ go send.Run(ctx)
- for {
- select {
- case <-ctx.Done():
- return
- case msg := <-chMsg:
- if len(msg.Tasklab.Sdkinfos) == 0 || int(msg.Tasklab.Index) >= len(msg.Tasklab.Sdkinfos) {
- s.fnLogger("reid !!!!!! Recv Msg From Humantrack Error")
- 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")
- continue
- }
+ for {
+ select {
+ case <-ctx.Done():
+ return
+ case msg := <-chMsg:
+ if len(msg.Tasklab.Sdkinfos) == 0 || int(msg.Tasklab.Index) >= len(msg.Tasklab.Sdkinfos) {
+ s.fnLogger("reid !!!!!! Recv Msg From Humantrack Error")
+ 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")
+ continue
+ }
- sdkInfo := msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)]
- s.fnLogger("reid~~~~~~Recv From Humantrack SDK Result Length: ", len(sdkInfo.Sdkdata))
+ sdkInfo := msg.Tasklab.Sdkinfos[int(msg.Tasklab.Index)]
+ s.fnLogger("reid~~~~~~Recv From Humantrack 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)
- continue
- }
+ res := &protomsg.HumanTrackResult{}
+ if err := proto.Unmarshal(sdkInfo.Sdkdata, res); err != nil {
+ s.fnLogger("reid !!!!!! proto.Unmarshal SDK Result From Humantrack msg Error:", err)
+ continue
+ }
- for _, v := range res.Result {
+ for _, v := range res.Result {
- 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)
- 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]
+ 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)
+ 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]
- 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)
- }
+ 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)
+ }
- }
+ }
- if 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 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))
+ 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)
- }
- default:
+ chSnd <- data
+ } else {
+ s.fnLogger("reid !!!!!! proto.Marshal Out Msg Error:", err)
+ }
+ default:
- time.Sleep(10 * time.Millisecond)
+ time.Sleep(10 * time.Millisecond)
- }
+ }
- }
+ }
}
--
Gitblit v1.8.0