From 837fc475082201eaf569cf01008770bec51d6eb5 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 19 七月 2019 17:24:58 +0800
Subject: [PATCH] merge so

---
 capture.go |   38 ++++++++++++++++++++++----------------
 1 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/capture.go b/capture.go
index 936c4fe..b7c2bee 100644
--- a/capture.go
+++ b/capture.go
@@ -34,39 +34,45 @@
 	InvalidFileExt PicExt = PicExt("")
 )
 
-const (
-	soFileRtsp = "./runtime/libcffmpeg.so"
-	soFileGB   = "./runtime/libcffmpeg_gb28181.so"
-)
-
 // Capture pic
-func Capture(m StreamMode, url string, ext PicExt, w, h, maxTry int) ([]byte, error) {
+func Capture(soFile string, m StreamMode, url string, ext PicExt, w, h, maxTry int) ([]byte, error) {
+	gb := false
+	if m == GB28181 {
+		gb = true
+	} else {
+		return nil, errors.New("there is no this mode, try capture.Rtsp/capture.GB28181")
+	}
+
 	if ext == InvalidFileExt {
 		ext = JPEGFileExt
 	}
 	var ret []byte
 	var err error
 
-	if m == Rtsp {
-		err = goffmpeg.InitFFmpeg(soFileRtsp)
-	} else if m == GB28181 {
-		err = goffmpeg.InitFFmpeg(soFileGB)
-	} else {
-		err = errors.New("there is no this mode, try capture.Rtsp/capture.GB28181")
-	}
+	err = goffmpeg.InitFFmpeg(soFile)
 	if err != nil {
 		return nil, err
 	}
 
-	ret, err = capt2Data(url, gocv.FileExt(ext), w, h, maxTry)
+	conf := goffmpeg.Config{
+		Scale:  goffmpeg.ScalePoint,
+		Width:  w,
+		Height: h,
+		GB:     gb,
+		CPU:    false,
+	}
+	gf := goffmpeg.New(conf)
+
+	ret, err = capt2Data(gf, url, gocv.FileExt(ext), w, h, maxTry)
+
+	gf.Free()
 	goffmpeg.FreeFFmpeg()
 
 	return ret, err
 }
 
-func capt2Data(url string, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
+func capt2Data(gf *goffmpeg.GoFFMPEG, url string, ext gocv.FileExt, w, h, maxTry int) ([]byte, error) {
 
-	gf := goffmpeg.New()
 	gf.Run(url)
 	gf.BuildDecoder()
 

--
Gitblit v1.8.0