From f29f269d999fc4bb8a9bfa85629f08b89971a2ef Mon Sep 17 00:00:00 2001
From: chenshijun <csj_sky@126.com>
Date: 星期二, 03 十二月 2019 16:00:49 +0800
Subject: [PATCH] Merge branch 'master' of ssh://192.168.5.5:29418/valib/goffmpeg

---
 gostream.go |   26 +++++++++++++++++++++++++-
 1 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/gostream.go b/gostream.go
index dc94166..a0af494 100644
--- a/gostream.go
+++ b/gostream.go
@@ -8,19 +8,43 @@
 
 import "unsafe"
 
+// CloseStream close stream
+func (h *GoFFMPEG) CloseStream() {
+	C.wrap_fn_close_stream(unsafe.Pointer(libcffmpeg), h.ffmpeg)
+}
+
 //GetAVPacket get AVPacket
 func (h *GoFFMPEG) GetAVPacket() ([]byte, int, int) {
 	var key C.int
 	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