|
|
|
|
@ -12,23 +12,12 @@ import (
@@ -12,23 +12,12 @@ import (
|
|
|
|
|
"github.com/bluenviron/gortsplib/v3/pkg/formats/rtpvp9" |
|
|
|
|
"github.com/bluenviron/gortsplib/v3/pkg/media" |
|
|
|
|
"github.com/bluenviron/gortsplib/v3/pkg/ringbuffer" |
|
|
|
|
"github.com/pion/rtp" |
|
|
|
|
"github.com/pion/webrtc/v3" |
|
|
|
|
|
|
|
|
|
"github.com/bluenviron/mediamtx/internal/formatprocessor" |
|
|
|
|
"github.com/bluenviron/mediamtx/internal/stream" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
// workaround until this gets tagged:
|
|
|
|
|
// https://github.com/pion/rtp/pull/234
|
|
|
|
|
func rtpPacketCopyForMarshal(in *rtp.Packet) *rtp.Packet { |
|
|
|
|
return &rtp.Packet{ |
|
|
|
|
Header: in.Header, |
|
|
|
|
Payload: in.Payload, |
|
|
|
|
PaddingSize: in.PaddingSize, |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
type webRTCOutgoingTrack struct { |
|
|
|
|
sender *webrtc.RTPSender |
|
|
|
|
media *media.Media |
|
|
|
|
@ -77,7 +66,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -77,7 +66,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, pkt := range packets { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -124,7 +113,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -124,7 +113,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, pkt := range packets { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -171,7 +160,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -171,7 +160,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, pkt := range packets { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -231,7 +220,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -231,7 +220,7 @@ func newWebRTCOutgoingTrackVideo(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for _, pkt := range packets { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -266,7 +255,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -266,7 +255,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
track: webRTCTrak, |
|
|
|
|
cb: func(unit formatprocessor.Unit) error { |
|
|
|
|
for _, pkt := range unit.GetRTPPackets() { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -296,7 +285,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -296,7 +285,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
track: webRTCTrak, |
|
|
|
|
cb: func(unit formatprocessor.Unit) error { |
|
|
|
|
for _, pkt := range unit.GetRTPPackets() { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
@ -333,7 +322,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
@@ -333,7 +322,7 @@ func newWebRTCOutgoingTrackAudio(medias media.Medias) (*webRTCOutgoingTrack, err
|
|
|
|
|
track: webRTCTrak, |
|
|
|
|
cb: func(unit formatprocessor.Unit) error { |
|
|
|
|
for _, pkt := range unit.GetRTPPackets() { |
|
|
|
|
webRTCTrak.WriteRTP(rtpPacketCopyForMarshal(pkt)) |
|
|
|
|
webRTCTrak.WriteRTP(pkt) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
|