From 5bb751a4c8e04ff130cd46aa620be9832125bd22 Mon Sep 17 00:00:00 2001 From: Alessandro Ros Date: Sun, 19 Jan 2025 18:40:18 +0100 Subject: [PATCH] hls: fix reading AV1 from OBS+WHIP (#3886) (#4177) --- go.mod | 2 +- go.sum | 4 ++-- internal/protocols/rtmp/reader.go | 9 ++++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index d56eee57..9d60f657 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/asticode/go-astits v1.13.0 github.com/bluenviron/gohlslib/v2 v2.1.2 github.com/bluenviron/gortsplib/v4 v4.12.1 - github.com/bluenviron/mediacommon v1.13.3 + github.com/bluenviron/mediacommon v1.13.4-0.20250119173005-20b296ab1174 github.com/datarhei/gosrt v0.8.0 github.com/fsnotify/fsnotify v1.8.0 github.com/gin-contrib/pprof v1.5.2 diff --git a/go.sum b/go.sum index 4310d53f..a7917930 100644 --- a/go.sum +++ b/go.sum @@ -35,8 +35,8 @@ github.com/bluenviron/gohlslib/v2 v2.1.2 h1:FfJDt3O5f8kHIGjGMjM2+lx3P3nCgq8ig224 github.com/bluenviron/gohlslib/v2 v2.1.2/go.mod h1:5S4NoAHSVcmYxlXP7Z7xCe3qX4M9X7SuEQ7K81dd+4w= github.com/bluenviron/gortsplib/v4 v4.12.1 h1:24wjrIXLrfwn3bcZR3eXviEAJxezHcqTpekqvnsaRic= github.com/bluenviron/gortsplib/v4 v4.12.1/go.mod h1:xfaZE+0oRX+4z4THWi9Y59qLE5zIVzzjR5gq6k/H8lQ= -github.com/bluenviron/mediacommon v1.13.3 h1:PgprN9mAd/F5ew7Ym+UZCiCJstQVT5mZXtmN9JZvv4Y= -github.com/bluenviron/mediacommon v1.13.3/go.mod h1:RrO01FltoVUlTBGXbOYtmx1ft1oBOpLxfNGsYlaFAO8= +github.com/bluenviron/mediacommon v1.13.4-0.20250119173005-20b296ab1174 h1:uw9t6nEy6NYMmOu78ESSTTkQaE7wLCkOsr9UJ7NIRLk= +github.com/bluenviron/mediacommon v1.13.4-0.20250119173005-20b296ab1174/go.mod h1:z5LP9Tm1ZNfQV5Co54PyOzaIhGMusDfRKmh42nQSnyo= github.com/bytedance/sonic v1.12.6 h1:/isNmCUF2x3Sh8RAp/4mh4ZGkcFAX/hLrzrK3AvpRzk= github.com/bytedance/sonic v1.12.6/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= diff --git a/internal/protocols/rtmp/reader.go b/internal/protocols/rtmp/reader.go index 603c6499..250ee64e 100644 --- a/internal/protocols/rtmp/reader.go +++ b/internal/protocols/rtmp/reader.go @@ -148,7 +148,8 @@ func videoTrackFromSequenceStart(msg *message.VideoExSequenceStart) (format.Form switch msg.FourCC { case message.FourCCAV1: // parse sequence header and metadata contained in ConfigOBUs, but do not use them - _, err := av1.BitstreamUnmarshal(msg.AV1Header.ConfigOBUs, false) + var tu av1.Bitstream + err := tu.Unmarshal(msg.AV1Header.ConfigOBUs) if err != nil { return nil, fmt.Errorf("invalid AV1 configuration: %w", err) } @@ -538,7 +539,8 @@ func (r *Reader) OnDataAV1(track *format.AV1, cb OnDataAV1Func) { r.onVideoData[r.videoTrackID(track)] = func(msg message.Message) error { switch msg := msg.(type) { case *message.VideoExFramesX: - tu, err := av1.BitstreamUnmarshal(msg.Payload, true) + var tu av1.Bitstream + err := tu.Unmarshal(msg.Payload) if err != nil { return fmt.Errorf("unable to decode bitstream: %w", err) } @@ -546,7 +548,8 @@ func (r *Reader) OnDataAV1(track *format.AV1, cb OnDataAV1Func) { cb(msg.DTS, tu) case *message.VideoExCodedFrames: - tu, err := av1.BitstreamUnmarshal(msg.Payload, true) + var tu av1.Bitstream + err := tu.Unmarshal(msg.Payload) if err != nil { return fmt.Errorf("unable to decode bitstream: %w", err) }