zhangmeng
2019-12-20 8ec46c79655e7d9d4c729adb5f192c19fbdbb338
gohumantrack/gohumantrack.go
@@ -26,7 +26,7 @@
void *create_fake_image(const int size){
   unsigned char *img = (unsigned char*)malloc(size);
   printf("batch~~~~~~ fake image len: %d\n", size);
   memset(img, 255, size);
   memset(img, 0, size);
   return img;
}
@@ -190,23 +190,32 @@
   }
   defer C.free(cImgs)
   var freeFakeImage []unsafe.Pointer
   // var freeFakeImage []unsafe.Pointer
   // defer func(f []unsafe.Pointer) {
   //    for _, v := range f {
   //       C.free(v)
   //    }
   // }(freeFakeImage)
   var fakeImage *ImageHumanTracker
   for k, v := range imgs {
      if v == nil {
         fake := C.create_fake_image(C.int(wid * hei * chn))
         freeFakeImage = append(freeFakeImage, fake)
         C.fill_images(cImgs, C.int(h.batchSize), C.int(k), fake, C.int(wid), C.int(hei), C.int(chn))
         // fake := C.create_fake_image(C.int(wid * hei * chn))
         // freeFakeImage = append(freeFakeImage, fake)
         // C.fill_images(cImgs, C.int(h.batchSize), C.int(k), fake, C.int(wid), C.int(hei), C.int(chn))
         v = fakeImage
         logo.Infoln("batch~~~~~~ fake image len: ", len(v.Data), " size: ", v.Width, "x", v.Height, "x", v.Channel)
         C.fill_images(cImgs, C.int(h.batchSize), C.int(k), unsafe.Pointer(&v.Data[0]), C.int(v.Width), C.int(v.Height), C.int(v.Channel))
      } else {
         if fakeImage == nil && v != nil {
            fakeImage = v
         }
         logo.Infoln("batch~~~~~~ real image len: ", len(v.Data), " size: ", v.Width, "x", v.Height, "x", v.Channel)
         C.fill_images(cImgs, C.int(h.batchSize), C.int(k), unsafe.Pointer(&v.Data[0]), C.int(v.Width), C.int(v.Height), C.int(v.Channel))
      }
   }
   defer func(f []unsafe.Pointer) {
      for _, v := range f {
         C.free(v)
      }
   }(freeFakeImage)
   cRet := C.process(h.handle, cImgs, C.int(h.batchSize), h.result)
   if cRet != 0 {