Skip to content

Commit

Permalink
rtmp: fix crash when receiving unexpected video packets (#1459) (#1504)
Browse files Browse the repository at this point in the history
  • Loading branch information
aler9 committed Feb 23, 2023
1 parent d7e493c commit 2cffea6
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions internal/core/rtmp_conn.go
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,10 @@ func (c *rtmpConn) runPublish(ctx context.Context, u *url.URL) error {

switch tmsg := msg.(type) {
case *message.MsgVideo:
if videoFormat == nil {
return fmt.Errorf("received a video packet, but track is not set up")
}

if tmsg.H264Type == flvio.AVC_SEQHDR {
var conf h264conf.Conf
err = conf.Unmarshal(tmsg.Payload)
Expand All @@ -594,10 +598,6 @@ func (c *rtmpConn) runPublish(ctx context.Context, u *url.URL) error {
c.log(logger.Warn, "%v", err)
}
} else if tmsg.H264Type == flvio.AVC_NALU {
if videoFormat == nil {
return fmt.Errorf("received a video packet, but track is not set up")
}

au, err := h264.AVCCUnmarshal(tmsg.Payload)
if err != nil {
c.log(logger.Warn, "unable to decode AVCC: %v", err)
Expand All @@ -608,11 +608,11 @@ func (c *rtmpConn) runPublish(ctx context.Context, u *url.URL) error {
}

case *message.MsgAudio:
if tmsg.AACType == flvio.AAC_RAW {
if audioFormat == nil {
return fmt.Errorf("received an audio packet, but track is not set up")
}
if audioFormat == nil {
return fmt.Errorf("received an audio packet, but track is not set up")
}

if tmsg.AACType == flvio.AAC_RAW {
err := rres.stream.writeData(audioMedia, audioFormat, &formatprocessor.DataMPEG4Audio{
PTS: tmsg.DTS,
AUs: [][]byte{tmsg.Payload},
Expand Down

0 comments on commit 2cffea6

Please sign in to comment.