Browse Source

hls client: ignore Annex-B decode errors

pull/883/head
aler9 4 years ago committed by Alessandro Ros
parent
commit
9cebeac039
  1. 3
      internal/hls/client.go
  2. 8
      internal/hls/client_video_processor.go

3
internal/hls/client.go

@ -176,7 +176,8 @@ func (c *Client) runInner() error {
c.tracksMutex.RLock() c.tracksMutex.RLock()
defer c.tracksMutex.RUnlock() defer c.tracksMutex.RUnlock()
c.onVideoData(pts, nalus) c.onVideoData(pts, nalus)
}) },
c.parent)
go func() { errChan <- c.videoProc.run() }() go func() { errChan <- c.videoProc.run() }()
} }

8
internal/hls/client_video_processor.go

@ -7,6 +7,8 @@ import (
"github.com/aler9/gortsplib" "github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/h264" "github.com/aler9/gortsplib/pkg/h264"
"github.com/aler9/rtsp-simple-server/internal/logger"
) )
type clientVideoProcessorData struct { type clientVideoProcessorData struct {
@ -19,6 +21,7 @@ type clientVideoProcessor struct {
ctx context.Context ctx context.Context
onTrack func(gortsplib.Track) error onTrack func(gortsplib.Track) error
onData func(time.Duration, [][]byte) onData func(time.Duration, [][]byte)
parent ClientParent
trackInitialized bool trackInitialized bool
queue chan clientVideoProcessorData queue chan clientVideoProcessorData
@ -31,11 +34,13 @@ func newClientVideoProcessor(
ctx context.Context, ctx context.Context,
onTrack func(gortsplib.Track) error, onTrack func(gortsplib.Track) error,
onData func(time.Duration, [][]byte), onData func(time.Duration, [][]byte),
parent ClientParent,
) *clientVideoProcessor { ) *clientVideoProcessor {
p := &clientVideoProcessor{ p := &clientVideoProcessor{
ctx: ctx, ctx: ctx,
onTrack: onTrack, onTrack: onTrack,
onData: onData, onData: onData,
parent: parent,
queue: make(chan clientVideoProcessorData, clientQueueSize), queue: make(chan clientVideoProcessorData, clientQueueSize),
} }
@ -72,7 +77,8 @@ func (p *clientVideoProcessor) doProcess(
nalus, err := h264.DecodeAnnexB(data) nalus, err := h264.DecodeAnnexB(data)
if err != nil { 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)) outNALUs := make([][]byte, 0, len(nalus))

Loading…
Cancel
Save