Files
gortsplib/pkg/rtcpsender/rtcpsender.go

64 lines
1.6 KiB
Go

// Package rtcpsender contains a utility to generate RTCP sender reports.
package rtcpsender
import (
"time"
"github.com/bluenviron/gortsplib/v4/internal/rtcpsender"
"github.com/pion/rtcp"
"github.com/pion/rtp"
)
// RTCPSender is a utility to generate RTCP sender reports.
//
// Deprecated: will be removed in the next version.
type RTCPSender rtcpsender.RTCPSender
// New allocates a RTCPSender.
func New(
clockRate int,
period time.Duration,
timeNow func() time.Time,
writePacketRTCP func(rtcp.Packet),
) *RTCPSender {
rs := &rtcpsender.RTCPSender{
ClockRate: clockRate,
Period: period,
TimeNow: timeNow,
WritePacketRTCP: writePacketRTCP,
}
rs.Initialize()
return (*RTCPSender)(rs)
}
// Close closes the RTCPSender.
func (rs *RTCPSender) Close() {
(*rtcpsender.RTCPSender)(rs).Close()
}
// ProcessPacket extracts data from RTP packets.
func (rs *RTCPSender) ProcessPacket(pkt *rtp.Packet, ntp time.Time, ptsEqualsDTS bool) {
(*rtcpsender.RTCPSender)(rs).ProcessPacketRTP(pkt, ntp, ptsEqualsDTS)
}
// SenderSSRC returns the SSRC of outgoing RTP packets.
func (rs *RTCPSender) SenderSSRC() (uint32, bool) {
stats := (*rtcpsender.RTCPSender)(rs).Stats()
if stats == nil {
return 0, false
}
return stats.LocalSSRC, true
}
// LastPacketData returns metadata of the last RTP packet.
func (rs *RTCPSender) LastPacketData() (uint16, uint32, time.Time, bool) {
stats := (*rtcpsender.RTCPSender)(rs).Stats()
if stats == nil {
return 0, 0, time.Time{}, false
}
return stats.LastSequenceNumber, stats.LastRTP, stats.LastNTP, true
}