diff --git a/internal/hls/client.go b/internal/hls/client.go index dd2e50e7..b6dda929 100644 --- a/internal/hls/client.go +++ b/internal/hls/client.go @@ -176,7 +176,8 @@ func (c *Client) runInner() error { c.tracksMutex.RLock() defer c.tracksMutex.RUnlock() c.onVideoData(pts, nalus) - }) + }, + c.parent) go func() { errChan <- c.videoProc.run() }() } diff --git a/internal/hls/client_video_processor.go b/internal/hls/client_video_processor.go index a6779f62..03cc323d 100644 --- a/internal/hls/client_video_processor.go +++ b/internal/hls/client_video_processor.go @@ -7,6 +7,8 @@ import ( "github.com/aler9/gortsplib" "github.com/aler9/gortsplib/pkg/h264" + + "github.com/aler9/rtsp-simple-server/internal/logger" ) type clientVideoProcessorData struct { @@ -19,6 +21,7 @@ type clientVideoProcessor struct { ctx context.Context onTrack func(gortsplib.Track) error onData func(time.Duration, [][]byte) + parent ClientParent trackInitialized bool queue chan clientVideoProcessorData @@ -31,11 +34,13 @@ func newClientVideoProcessor( ctx context.Context, onTrack func(gortsplib.Track) error, onData func(time.Duration, [][]byte), + parent ClientParent, ) *clientVideoProcessor { p := &clientVideoProcessor{ ctx: ctx, onTrack: onTrack, onData: onData, + parent: parent, queue: make(chan clientVideoProcessorData, clientQueueSize), } @@ -72,7 +77,8 @@ func (p *clientVideoProcessor) doProcess( nalus, err := h264.DecodeAnnexB(data) if err != nil { - return err + p.parent.Log(logger.Warn, "unable to decode Annex-B: %s", err) + return nil } outNALUs := make([][]byte, 0, len(nalus))