From 2b72f43c9e8398c44e15329672912b88e8e227e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 5 Feb 2021 12:41:02 +0100 Subject: [PATCH] do not start pipeline when error. --- internal/capture/broadcast.go | 7 ++++++- internal/capture/manager.go | 13 +++++++++++-- internal/capture/screencast.go | 6 ++++-- internal/capture/stream.go | 9 +++++++-- internal/types/capture.go | 2 +- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/internal/capture/broadcast.go b/internal/capture/broadcast.go index 3bcd8ca3..10ad3574 100644 --- a/internal/capture/broadcast.go +++ b/internal/capture/broadcast.go @@ -32,9 +32,14 @@ func (manager *BroacastManagerCtx) shutdown() { } func (manager *BroacastManagerCtx) Start(url string) error { + err := manager.createPipeline() + if err != nil { + return err + } + manager.url = url manager.enabled = true - return manager.createPipeline() + return nil } func (manager *BroacastManagerCtx) Stop() { diff --git a/internal/capture/manager.go b/internal/capture/manager.go index cf76adde..e729aab2 100644 --- a/internal/capture/manager.go +++ b/internal/capture/manager.go @@ -111,8 +111,17 @@ func (manager *CaptureManagerCtx) StartStream() { manager.logger.Info().Msgf("starting stream pipelines") - manager.Video().Start() - manager.Audio().Start() + var err error + err = manager.Video().Start() + if err != nil { + manager.logger.Panic().Err(err).Msg("unable to start video pipeline") + } + + err = manager.Audio().Start() + if err != nil { + manager.logger.Panic().Err(err).Msg("unable to start audio pipeline") + } + manager.streaming = true } diff --git a/internal/capture/screencast.go b/internal/capture/screencast.go index 8b210b7c..c092d3c4 100644 --- a/internal/capture/screencast.go +++ b/internal/capture/screencast.go @@ -147,9 +147,11 @@ func (manager *ScreencastManagerCtx) createPipeline() error { return err } - manager.pipeline.Start() - manager.logger.Info().Msgf("starting pipeline") + manager.logger.Info(). + Str("src", manager.pipeline.Src). + Msgf("starting pipeline") + manager.pipeline.Start() manager.sample = manager.pipeline.Sample manager.emitUpdate <-true return nil diff --git a/internal/capture/stream.go b/internal/capture/stream.go index b98722a4..e390377d 100644 --- a/internal/capture/stream.go +++ b/internal/capture/stream.go @@ -75,9 +75,14 @@ func (manager *StreamManagerCtx) OnSample(listener func(sample types.Sample)) { }) } -func (manager *StreamManagerCtx) Start() { +func (manager *StreamManagerCtx) Start() error { + err := manager.createPipeline() + if err != nil { + return err + } + manager.enabled = true - manager.createPipeline() + return nil } func (manager *StreamManagerCtx) Stop() { diff --git a/internal/types/capture.go b/internal/types/capture.go index 0fa0737d..9a979e5e 100644 --- a/internal/types/capture.go +++ b/internal/types/capture.go @@ -25,7 +25,7 @@ type StreamManager interface { Codec() codec.RTPCodec OnSample(listener func(sample Sample)) - Start() + Start() error Stop() Enabled() bool }