mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 14:52:46 +08:00
align PacketPTS() and PacketNTP(); add example (#374)
This commit is contained in:
@@ -1,11 +1,54 @@
|
||||
package gortsplib
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/pion/rtcp"
|
||||
"github.com/pion/rtp"
|
||||
|
||||
"github.com/bluenviron/gortsplib/v4/pkg/format"
|
||||
"github.com/bluenviron/gortsplib/v4/pkg/rtcpsender"
|
||||
)
|
||||
|
||||
type serverStreamFormat struct {
|
||||
sm *serverStreamMedia
|
||||
format format.Format
|
||||
rtcpSender *rtcpsender.RTCPSender
|
||||
}
|
||||
|
||||
func newServerStreamFormat(sm *serverStreamMedia, forma format.Format) *serverStreamFormat {
|
||||
sf := &serverStreamFormat{
|
||||
sm: sm,
|
||||
format: forma,
|
||||
}
|
||||
|
||||
sf.rtcpSender = rtcpsender.New(
|
||||
forma.ClockRate(),
|
||||
sm.st.s.senderReportPeriod,
|
||||
sm.st.s.timeNow,
|
||||
func(pkt rtcp.Packet) {
|
||||
if !sm.st.s.DisableRTCPSenderReports {
|
||||
sm.st.WritePacketRTCP(sm.media, pkt) //nolint:errcheck
|
||||
}
|
||||
},
|
||||
)
|
||||
|
||||
return sf
|
||||
}
|
||||
|
||||
func (sf *serverStreamFormat) writePacketRTP(byts []byte, pkt *rtp.Packet, ntp time.Time) {
|
||||
sf.rtcpSender.ProcessPacket(pkt, ntp, sf.format.PTSEqualsDTS(pkt))
|
||||
|
||||
// send unicast
|
||||
for r := range sf.sm.st.activeUnicastReaders {
|
||||
sm, ok := r.setuppedMedias[sf.sm.media]
|
||||
if ok {
|
||||
sm.writePacketRTP(byts)
|
||||
}
|
||||
}
|
||||
|
||||
// send multicast
|
||||
if sf.sm.multicastWriter != nil {
|
||||
sf.sm.multicastWriter.writePacketRTP(byts)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user