| | |
| | | |
| | | 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) |
| | |
| | | } |
| | | 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 |
| | | } |