From 9f9fe3bd37bfde7452d8415e48260ba334c321dd Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 15 Jan 2025 21:48:36 +0100 Subject: [PATCH 1/2] Update gortsplib.go --- machinery/src/capture/gortsplib.go | 49 ++++++++++++++++++------------ 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/machinery/src/capture/gortsplib.go b/machinery/src/capture/gortsplib.go index d518f075..89003d65 100644 --- a/machinery/src/capture/gortsplib.go +++ b/machinery/src/capture/gortsplib.go @@ -83,6 +83,25 @@ type Golibrtsp struct { Streams []packets.Stream } +// Init function +var H264FrameDecoder *Decoder +var H265FrameDecoder *Decoder + +func init() { + var err error + // setup H264 -> raw frames decoder + H264FrameDecoder, err = newDecoder("H264") + if err != nil { + log.Log.Error("capture.golibrtsp.init(): " + err.Error()) + } + + // setup H265 -> raw frames decoder + H265FrameDecoder, err = newDecoder("H265") + if err != nil { + log.Log.Error("capture.golibrtsp.Connect(H265): " + err.Error()) + } +} + // Connect to the RTSP server. func (g *Golibrtsp) Connect(ctx context.Context) (err error) { @@ -171,13 +190,7 @@ func (g *Golibrtsp) Connect(ctx context.Context) (err error) { log.Log.Error("capture.golibrtsp.Connect(H264): " + err.Error()) } g.VideoH264Decoder = rtpDec - - // setup H264 -> raw frames decoder - frameDec, err := newDecoder("H264") - if err != nil { - log.Log.Error("capture.golibrtsp.Connect(H264): " + err.Error()) - } - g.VideoH264FrameDecoder = frameDec + g.VideoH264FrameDecoder = H264FrameDecoder } } @@ -227,12 +240,7 @@ func (g *Golibrtsp) Connect(ctx context.Context) (err error) { } g.VideoH265Decoder = rtpDec - // setup H265 -> raw frames decoder - frameDec, err := newDecoder("H265") - if err != nil { - log.Log.Error("capture.golibrtsp.Connect(H265): " + err.Error()) - } - g.VideoH265FrameDecoder = frameDec + g.VideoH265FrameDecoder = H265FrameDecoder } } @@ -882,12 +890,15 @@ func (g *Golibrtsp) GetAudioStreams() ([]packets.Stream, error) { func (g *Golibrtsp) Close() error { // Close the demuxer. g.Client.Close() - if g.VideoH264Decoder != nil { - g.VideoH264FrameDecoder.Close() - } - if g.VideoH265FrameDecoder != nil { - g.VideoH265FrameDecoder.Close() - } + + // We will have created the decoders globally, so we don't need to close them here. + + //if g.VideoH264Decoder != nil { + // g.VideoH264FrameDecoder.Close() + //} + //if g.VideoH265FrameDecoder != nil { + // g.VideoH265FrameDecoder.Close() + //} return nil } From 81045ea9559909074616e32c8cee205c922054b0 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 15 Jan 2025 21:51:23 +0100 Subject: [PATCH 2/2] Update gortsplib.go --- machinery/src/capture/gortsplib.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machinery/src/capture/gortsplib.go b/machinery/src/capture/gortsplib.go index 89003d65..75eee55e 100644 --- a/machinery/src/capture/gortsplib.go +++ b/machinery/src/capture/gortsplib.go @@ -98,7 +98,7 @@ func init() { // setup H265 -> raw frames decoder H265FrameDecoder, err = newDecoder("H265") if err != nil { - log.Log.Error("capture.golibrtsp.Connect(H265): " + err.Error()) + log.Log.Error("capture.golibrtsp.init(): " + err.Error()) } }