| | |
| | | |
| | | // GoConv conv |
| | | type GoConv struct { |
| | | srcW int |
| | | srcH int |
| | | dstW int |
| | | dstH int |
| | | SrcW int |
| | | SrcH int |
| | | DstW int |
| | | DstH int |
| | | |
| | | conv C.cconv |
| | | } |
| | | |
| | | // NewConv new conv |
| | | func NewConv(srcW, srcH, dstW, dstH, scaleFlag int) *GoConv { |
| | | c := C.wrap_fn_create_conv(C.int(srcW), C.int(srcH), C.int(SrcFormat), |
| | | c := C.wrap_fn_create_conv(unsafe.Pointer(libcffmpeg), C.int(srcW), C.int(srcH), C.int(SrcFormat), |
| | | C.int(dstW), C.int(dstH), C.int(DstFormat), C.int(scaleFlag)) |
| | | |
| | | if c == nil { |
| | |
| | | } |
| | | |
| | | // NewResizer resize |
| | | func NewResizer(srcW, srcH, format, dstW, dstH int) *GoConv { |
| | | c := C.wrap_fn_create_conv(C.int(srcW), C.int(srcH), C.int(format), C.int(dstW), C.int(dstH), C.int(format), ScaleNone) |
| | | func NewResizer(srcW, srcH, format, dstW, dstH, scaleFlag int) *GoConv { |
| | | c := C.wrap_fn_create_conv(unsafe.Pointer(libcffmpeg), C.int(srcW), C.int(srcH), C.int(format), |
| | | C.int(dstW), C.int(dstH), C.int(format), C.int(scaleFlag)) |
| | | |
| | | if c == nil { |
| | | return nil |
| | |
| | | // Free free |
| | | func (c *GoConv) Free() { |
| | | if c.conv != nil { |
| | | C.wrap_fn_destroy_conv(c.conv) |
| | | C.wrap_fn_destroy_conv(unsafe.Pointer(libcffmpeg), c.conv) |
| | | } |
| | | } |
| | | |
| | |
| | | cin := C.CBytes(src) |
| | | defer C.free(cin) |
| | | |
| | | bgr := C.wrap_fn_conv(c.conv, (*C.uchar)(cin)) |
| | | bgr := C.wrap_fn_conv(unsafe.Pointer(libcffmpeg), c.conv, (*C.uchar)(cin)) |
| | | defer C.free(unsafe.Pointer(bgr)) |
| | | |
| | | if bgr != nil { |
| | | return C.GoBytes(bgr, C.int(c.dstW*c.dstH*3)) |
| | | return C.GoBytes(bgr, C.int(c.DstW*c.DstH*3)) |
| | | } |
| | | |
| | | return nil |
| | |
| | | |
| | | // Resize resize |
| | | func (c *GoConv) Resize(src []byte) []byte { |
| | | if c.srcW == c.dstW && c.srcH == c.dstH { |
| | | if c.SrcW == c.DstW && c.SrcH == c.DstH { |
| | | return src |
| | | } |
| | | return c.ConvToPicture(src) |
| | | } |
| | | |
| | | /////////////// for conv |
| | | |
| | | // ConvGPU conv gpu resize |
| | | func ConvGPU(in []byte, w, h, dstW, dstH int) []byte { |
| | | |
| | | return nil |
| | | |
| | | } |