From f963cd025c1aa88ac8b211e24f46ceb0eb64c418 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 07 五月 2019 14:19:29 +0800
Subject: [PATCH] 多个解码单元同时运行,注意tcp地址

---
 decoder/work/service/ipcsender.go |   26 +++++++++++++++++++-------
 1 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/decoder/work/service/ipcsender.go b/decoder/work/service/ipcsender.go
index 102c735..6c05f7a 100644
--- a/decoder/work/service/ipcsender.go
+++ b/decoder/work/service/ipcsender.go
@@ -7,6 +7,7 @@
 	"decoder/valib/ipc"
 	"encoding/gob"
 	"fmt"
+	"time"
 )
 
 // Sender decoder ingo
@@ -61,21 +62,32 @@
 	gf := goffmpeg.New()
 	if gf != nil {
 		s.ffmpeg = gf
+	} else {
+		fmt.Println("create decoder ffmpeg error")
+		return
 	}
 	imageChan := make(chan ImageInfo)
 	dataChan := make(chan []byte)
 
 	go s.serializeImageInfo(imageChan, dataChan)
 
-	gf.ActiveDecoder(func(d *[]byte, w, h *int) {
-		if *w > 0 && *h > 0 {
-			img := ImageInfo{*d, *w, *h}
-			imageChan <- img
-		} else {
-			fmt.Println("decode jpg error")
+	gf.BuildDecoder()
+
+	go func(f *goffmpeg.GoFFMPEG, ch chan<- ImageInfo) {
+		for {
+			data, wid, hei := f.GetPicDecoder()
+			if wid > 0 && hei > 0 {
+				img := ImageInfo{Data: data, Width: wid, Height: hei}
+				ch <- img
+			} else {
+				time.Sleep(time.Millisecond * time.Duration(10))
+			}
 		}
-	})
+
+	}(gf, imageChan)
+
 	gf.Run(s.streamURL)
+
 	i.SendFromChannel(dataChan)
 }
 

--
Gitblit v1.8.0