From dc65b072a13994ff02cc7b54f3b00ba087e7f86a Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期三, 20 十一月 2019 14:05:52 +0800
Subject: [PATCH] add zerocopy

---
 gostream.go |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/gostream.go b/gostream.go
index dc94166..7ae6636 100644
--- a/gostream.go
+++ b/gostream.go
@@ -14,13 +14,32 @@
 	var size C.int
 
 	p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key)
+	defer C.free(unsafe.Pointer(p))
 	if size <= 0 {
 		return nil, 0, -1
 	}
-	defer C.free(unsafe.Pointer(p))
 	d := C.GoBytes(p, size)
 	s := int(size)
 	k := int(key)
 
 	return d, s, k
 }
+
+//GetAVPacket2 get AVPacket
+func (h *GoFFMPEG) GetAVPacket2() (unsafe.Pointer, []byte, int, int) {
+	var key C.int
+	var size C.int
+
+	p := C.wrap_fn_get_avpacket(unsafe.Pointer(libcffmpeg), h.ffmpeg, &size, &key)
+	if size <= 0 {
+		return nil, nil, 0, -1
+	}
+
+	const maxLen = 0x7fffffff
+	length := int(size)
+	data := (*[maxLen]byte)(unsafe.Pointer(p))[:length:length]
+
+	k := int(key)
+
+	return p, data, length, k
+}

--
Gitblit v1.8.0