From 080acae08ec8cfe413c3e6e45bcf7f9222dfa02d Mon Sep 17 00:00:00 2001 From: zhangmeng <775834166@qq.com> Date: 星期四, 24 十月 2019 16:50:28 +0800 Subject: [PATCH] update --- goconv.go | 55 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 39 insertions(+), 16 deletions(-) diff --git a/goconv.go b/goconv.go index 459b3dd..06dba30 100644 --- a/goconv.go +++ b/goconv.go @@ -35,21 +35,43 @@ ) // SrcFormat format -const srcFormat = 23 +const SrcFormat = 23 + +// DstFormat format +const DstFormat = 3 // 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.int(dstW), C.int(dstH), C.int(scaleFlag)) + 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 { + return nil + } + + return &GoConv{ + srcW, + srcH, + dstW, + dstH, + c, + } +} + +// NewResizer resize +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 @@ -67,7 +89,7 @@ // 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) } } @@ -80,21 +102,22 @@ 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 } -/////////////// for conv - -// ConvGPU conv gpu resize -func ConvGPU(in []byte, w, h, dstW, dstH int) []byte { - - return nil - +// Resize resize +func (c *GoConv) Resize(src []byte) []byte { + if c.SrcW == c.DstW && c.SrcH == c.DstH { + return src + } + return c.ConvToPicture(src) } + +/////////////// for conv -- Gitblit v1.8.0