video analysis2.0拆分,ffmpeg封装go接口库
zhangmeng
2019-11-20 dc65b072a13994ff02cc7b54f3b00ba087e7f86a
goenc.go
@@ -37,10 +37,8 @@
   var size C.int
   var key C.int
   cin := C.CBytes(in)
   defer C.free(cin)
   p := C.wrap_fn_encode(unsafe.Pointer(libcffmpeg), e.enc, cin, C.int(w), C.int(h), &size, &key)
   p := C.wrap_fn_encode(unsafe.Pointer(libcffmpeg), e.enc, unsafe.Pointer(&in[0]), C.int(w), C.int(h), &size, &key)
   defer C.free(p)
   if p != nil && size > 0 {
      b := C.GoBytes(p, size)
@@ -53,3 +51,25 @@
   }
   return nil, 0, false
}
// Encode2 pic
func (e *GoEncoder) Encode2(in []byte, w, h int) (unsafe.Pointer, []byte, int, bool) {
   var size C.int
   var key C.int
   p := C.wrap_fn_encode(unsafe.Pointer(libcffmpeg), e.enc, unsafe.Pointer(&in[0]), C.int(w), C.int(h), &size, &key)
   if p != nil && size > 0 {
      isKey := false
      if key > 0 {
         isKey = true
      }
      const maxLen = 0x7fffffff
      length := int(size)
      data := (*[maxLen]byte)(unsafe.Pointer(p))[:length:length]
      return p, data, length, isKey
   }
   return nil, nil, 0, false
}