normalize names

This commit is contained in:
aler9
2021-01-06 12:26:07 +01:00
parent 85e7127cfe
commit 8e70ac4d59
15 changed files with 117 additions and 117 deletions

View File

@@ -348,14 +348,14 @@ func TestClientDialPublishSerial(t *testing.T) {
buf := make([]byte, 2048)
n, _, err := pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
require.NoError(t, err)
conn.Close()
n, _, err = pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
require.Error(t, err)
})
}
@@ -446,7 +446,7 @@ func TestClientDialPublishParallel(t *testing.T) {
break
}
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
if err != nil {
break
}
@@ -524,7 +524,7 @@ func TestClientDialPublishPauseSerial(t *testing.T) {
n, _, err := pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
require.NoError(t, err)
_, err = conn.Pause()
@@ -532,7 +532,7 @@ func TestClientDialPublishPauseSerial(t *testing.T) {
n, _, err = pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
require.Error(t, err)
_, err = conn.Record()
@@ -540,7 +540,7 @@ func TestClientDialPublishPauseSerial(t *testing.T) {
n, _, err = pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
require.NoError(t, err)
})
}
@@ -600,7 +600,7 @@ func TestClientDialPublishPauseParallel(t *testing.T) {
n, _, err := pc.ReadFrom(buf)
require.NoError(t, err)
err = conn.WriteFrame(track.ID, StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, StreamTypeRTP, buf[:n])
if err != nil {
break
}

View File

@@ -76,18 +76,18 @@ type ClientConn struct {
streamURL *base.URL
streamProtocol *StreamProtocol
tracks Tracks
udpRtpListeners map[int]*clientConnUDPListener
udpRtcpListeners map[int]*clientConnUDPListener
udpRTPListeners map[int]*clientConnUDPListener
udpRTCPListeners map[int]*clientConnUDPListener
getParameterSupported bool
// read only
rtcpReceivers map[int]*rtcpreceiver.RtcpReceiver
rtcpReceivers map[int]*rtcpreceiver.RTCPReceiver
udpLastFrameTimes map[int]*int64
tcpFrameBuffer *multibuffer.MultiBuffer
readCB func(int, StreamType, []byte)
// publish only
rtcpSenders map[int]*rtcpsender.RtcpSender
rtcpSenders map[int]*rtcpsender.RTCPSender
publishError error
publishWriteMutex sync.RWMutex
publishOpen bool
@@ -150,12 +150,12 @@ func newClientConn(conf ClientConf, scheme string, host string) (*ClientConn, er
isTLS: (scheme == "rtsps"),
br: bufio.NewReaderSize(conn, clientReadBufferSize),
bw: bufio.NewWriterSize(conn, clientWriteBufferSize),
udpRtpListeners: make(map[int]*clientConnUDPListener),
udpRtcpListeners: make(map[int]*clientConnUDPListener),
rtcpReceivers: make(map[int]*rtcpreceiver.RtcpReceiver),
udpRTPListeners: make(map[int]*clientConnUDPListener),
udpRTCPListeners: make(map[int]*clientConnUDPListener),
rtcpReceivers: make(map[int]*rtcpreceiver.RTCPReceiver),
udpLastFrameTimes: make(map[int]*int64),
tcpFrameBuffer: multibuffer.New(conf.ReadBufferCount, clientTCPFrameReadBufferSize),
rtcpSenders: make(map[int]*rtcpsender.RtcpSender),
rtcpSenders: make(map[int]*rtcpsender.RTCPSender),
publishError: fmt.Errorf("not running"),
}, nil
}
@@ -173,11 +173,11 @@ func (c *ClientConn) Close() error {
})
}
for _, l := range c.udpRtpListeners {
for _, l := range c.udpRTPListeners {
l.close()
}
for _, l := range c.udpRtcpListeners {
for _, l := range c.udpRTCPListeners {
l.close()
}
@@ -634,15 +634,15 @@ func (c *ClientConn) Setup(mode headers.TransportMode, track *Track,
rtpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
rtpListener.remotePort = (*thRes.ServerPorts)[0]
rtpListener.trackID = track.ID
rtpListener.streamType = StreamTypeRtp
c.udpRtpListeners[track.ID] = rtpListener
rtpListener.streamType = StreamTypeRTP
c.udpRTPListeners[track.ID] = rtpListener
rtcpListener.remoteIP = c.nconn.RemoteAddr().(*net.TCPAddr).IP
rtcpListener.remoteZone = c.nconn.RemoteAddr().(*net.TCPAddr).Zone
rtcpListener.remotePort = (*thRes.ServerPorts)[1]
rtcpListener.trackID = track.ID
rtcpListener.streamType = StreamTypeRtcp
c.udpRtcpListeners[track.ID] = rtcpListener
rtcpListener.streamType = StreamTypeRTCP
c.udpRTCPListeners[track.ID] = rtcpListener
}
if mode == headers.TransportModePlay {

View File

@@ -129,7 +129,7 @@ func (c *ClientConn) backgroundRecordUDP() {
for trackID := range c.rtcpSenders {
r := c.rtcpSenders[trackID].Report(now)
if r != nil {
c.udpRtcpListeners[trackID].write(r)
c.udpRTCPListeners[trackID].write(r)
}
}
c.publishWriteMutex.Unlock()
@@ -167,7 +167,7 @@ func (c *ClientConn) backgroundRecordTCP() {
c.nconn.SetWriteDeadline(time.Now().Add(c.conf.WriteTimeout))
frame := base.InterleavedFrame{
TrackID: trackID,
StreamType: StreamTypeRtcp,
StreamType: StreamTypeRTCP,
Content: r,
}
frame.Write(c.bw)
@@ -193,10 +193,10 @@ func (c *ClientConn) WriteFrame(trackID int, streamType StreamType, payload []by
c.rtcpSenders[trackID].ProcessFrame(now, streamType, payload)
if *c.streamProtocol == StreamProtocolUDP {
if streamType == StreamTypeRtp {
return c.udpRtpListeners[trackID].write(payload)
if streamType == StreamTypeRTP {
return c.udpRTPListeners[trackID].write(payload)
}
return c.udpRtcpListeners[trackID].write(payload)
return c.udpRTCPListeners[trackID].write(payload)
}
c.nconn.SetWriteDeadline(now.Add(c.conf.WriteTimeout))

View File

@@ -39,26 +39,26 @@ func (c *ClientConn) backgroundPlayUDP(done chan error) {
var returnError error
defer func() {
for trackID := range c.udpRtpListeners {
c.udpRtpListeners[trackID].stop()
c.udpRtcpListeners[trackID].stop()
for trackID := range c.udpRTPListeners {
c.udpRTPListeners[trackID].stop()
c.udpRTCPListeners[trackID].stop()
}
done <- returnError
}()
// open the firewall by sending packets to the counterpart
for trackID := range c.udpRtpListeners {
c.udpRtpListeners[trackID].write(
for trackID := range c.udpRTPListeners {
c.udpRTPListeners[trackID].write(
[]byte{0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
c.udpRtcpListeners[trackID].write(
c.udpRTCPListeners[trackID].write(
[]byte{0x80, 0xc9, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00})
}
for trackID := range c.udpRtpListeners {
c.udpRtpListeners[trackID].start()
c.udpRtcpListeners[trackID].start()
for trackID := range c.udpRTPListeners {
c.udpRTPListeners[trackID].start()
c.udpRTCPListeners[trackID].start()
}
// disable deadline
@@ -97,7 +97,7 @@ func (c *ClientConn) backgroundPlayUDP(done chan error) {
now := time.Now()
for trackID := range c.rtcpReceivers {
r := c.rtcpReceivers[trackID].Report(now)
c.udpRtcpListeners[trackID].write(r)
c.udpRTCPListeners[trackID].write(r)
}
case <-keepaliveTicker.C:
@@ -195,7 +195,7 @@ func (c *ClientConn) backgroundPlayTCP(done chan error) {
c.nconn.SetWriteDeadline(time.Now().Add(c.conf.WriteTimeout))
frame := base.InterleavedFrame{
TrackID: trackID,
StreamType: StreamTypeRtcp,
StreamType: StreamTypeRTCP,
Content: r,
}
frame.Write(c.bw)

View File

@@ -19,9 +19,9 @@ const (
type StreamType = base.StreamType
const (
// StreamTypeRtp means that the stream contains RTP packets
StreamTypeRtp StreamType = base.StreamTypeRtp
// StreamTypeRTP means that the stream contains RTP packets
StreamTypeRTP StreamType = base.StreamTypeRTP
// StreamTypeRtcp means that the stream contains RTCP packets
StreamTypeRtcp StreamType = base.StreamTypeRtcp
// StreamTypeRTCP means that the stream contains RTCP packets
StreamTypeRTCP StreamType = base.StreamTypeRTCP
)

View File

@@ -70,7 +70,7 @@ func main() {
}
// write track frames
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf[:n])
if err != nil {
panic(err)
}

View File

@@ -66,7 +66,7 @@ func main() {
}
// write track frames
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf[:n])
if err != nil {
break
}

View File

@@ -58,7 +58,7 @@ func main() {
}
// write track frames
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRtp, buf[:n])
err = conn.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf[:n])
if err != nil {
panic(err)
}

View File

@@ -50,20 +50,20 @@ func (sc StreamDelivery) String() string {
type StreamType int
const (
// StreamTypeRtp means that the stream contains RTP packets
StreamTypeRtp StreamType = iota
// StreamTypeRTP means that the stream contains RTP packets
StreamTypeRTP StreamType = iota
// StreamTypeRtcp means that the stream contains RTCP packets
StreamTypeRtcp
// StreamTypeRTCP means that the stream contains RTCP packets
StreamTypeRTCP
)
// String implements fmt.Stringer
func (st StreamType) String() string {
switch st {
case StreamTypeRtp:
case StreamTypeRTP:
return "RTP"
case StreamTypeRtcp:
case StreamTypeRTCP:
return "RTCP"
}
return "unknown"

View File

@@ -92,9 +92,9 @@ func (f *InterleavedFrame) Read(br *bufio.Reader) error {
channel := header[1]
f.TrackID, f.StreamType = func() (int, StreamType) {
if (channel % 2) == 0 {
return int(channel / 2), StreamTypeRtp
return int(channel / 2), StreamTypeRTP
}
return int((channel - 1) / 2), StreamTypeRtcp
return int((channel - 1) / 2), StreamTypeRTCP
}()
f.Content = f.Content[:framelen]
@@ -110,7 +110,7 @@ func (f *InterleavedFrame) Read(br *bufio.Reader) error {
func (f InterleavedFrame) Write(bw *bufio.Writer) error {
// convert TrackID and StreamType into channel
channel := func() uint8 {
if f.StreamType == StreamTypeRtp {
if f.StreamType == StreamTypeRTP {
return uint8(f.TrackID * 2)
}
return uint8((f.TrackID * 2) + 1)

View File

@@ -11,18 +11,18 @@ import (
"github.com/aler9/gortsplib/pkg/base"
)
// RtcpReceiver is a utility to generate RTCP receiver reports.
type RtcpReceiver struct {
// RTCPReceiver is a utility to generate RTCP receiver reports.
type RTCPReceiver struct {
receiverSSRC uint32
clockRate float64
mutex sync.Mutex
// data from rtp packets
firstRtpReceived bool
firstRTPReceived bool
sequenceNumberCycles uint16
lastSequenceNumber uint16
lastRtpTimeRtp uint32
lastRtpTimeTime time.Time
lastRTPTimeRTP uint32
lastRTPTimeTime time.Time
totalLost uint32
totalLostSinceReport uint32
totalSinceReport uint32
@@ -34,9 +34,9 @@ type RtcpReceiver struct {
lastSenderReportTime time.Time
}
// New allocates a RtcpReceiver.
func New(receiverSSRC *uint32, clockRate int) *RtcpReceiver {
return &RtcpReceiver{
// New allocates a RTCPReceiver.
func New(receiverSSRC *uint32, clockRate int) *RTCPReceiver {
return &RTCPReceiver{
receiverSSRC: func() uint32 {
if receiverSSRC == nil {
return rand.Uint32()
@@ -48,23 +48,23 @@ func New(receiverSSRC *uint32, clockRate int) *RtcpReceiver {
}
// ProcessFrame extracts the needed data from RTP or RTCP frames.
func (rr *RtcpReceiver) ProcessFrame(ts time.Time, streamType base.StreamType, buf []byte) {
func (rr *RTCPReceiver) ProcessFrame(ts time.Time, streamType base.StreamType, buf []byte) {
rr.mutex.Lock()
defer rr.mutex.Unlock()
if streamType == base.StreamTypeRtp {
if streamType == base.StreamTypeRTP {
// do not parse the entire packet, extract only the fields we need
if len(buf) >= 8 {
sequenceNumber := uint16(buf[2])<<8 | uint16(buf[3])
rtpTime := uint32(buf[4])<<24 | uint32(buf[5])<<16 | uint32(buf[6])<<8 | uint32(buf[7])
// first frame
if !rr.firstRtpReceived {
rr.firstRtpReceived = true
if !rr.firstRTPReceived {
rr.firstRTPReceived = true
rr.totalSinceReport = 1
rr.lastSequenceNumber = sequenceNumber
rr.lastRtpTimeRtp = rtpTime
rr.lastRtpTimeTime = ts
rr.lastRTPTimeRTP = rtpTime
rr.lastRTPTimeTime = ts
// subsequent frames
} else {
@@ -93,8 +93,8 @@ func (rr *RtcpReceiver) ProcessFrame(ts time.Time, streamType base.StreamType, b
// compute jitter
// https://tools.ietf.org/html/rfc3550#page-39
D := ts.Sub(rr.lastRtpTimeTime).Seconds()*rr.clockRate -
(float64(rtpTime) - float64(rr.lastRtpTimeRtp))
D := ts.Sub(rr.lastRTPTimeTime).Seconds()*rr.clockRate -
(float64(rtpTime) - float64(rr.lastRTPTimeRTP))
if D < 0 {
D = -D
}
@@ -102,8 +102,8 @@ func (rr *RtcpReceiver) ProcessFrame(ts time.Time, streamType base.StreamType, b
rr.totalSinceReport += uint32(uint16(diff))
rr.lastSequenceNumber = sequenceNumber
rr.lastRtpTimeRtp = rtpTime
rr.lastRtpTimeTime = ts
rr.lastRTPTimeRTP = rtpTime
rr.lastRTPTimeTime = ts
}
// ignore invalid frames (diff = 0) or reordered frames (diff < 0)
}
@@ -126,7 +126,7 @@ func (rr *RtcpReceiver) ProcessFrame(ts time.Time, streamType base.StreamType, b
}
// Report generates a RTCP receiver report.
func (rr *RtcpReceiver) Report(ts time.Time) []byte {
func (rr *RTCPReceiver) Report(ts time.Time) []byte {
rr.mutex.Lock()
defer rr.mutex.Unlock()

View File

@@ -11,7 +11,7 @@ import (
"github.com/aler9/gortsplib/pkg/base"
)
func TestRtcpReceiverBase(t *testing.T) {
func TestRTCPReceiverBase(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -24,7 +24,7 @@ func TestRtcpReceiverBase(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -39,7 +39,7 @@ func TestRtcpReceiverBase(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -54,7 +54,7 @@ func TestRtcpReceiverBase(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 21, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,
@@ -72,7 +72,7 @@ func TestRtcpReceiverBase(t *testing.T) {
require.Equal(t, expected, rr.Report(ts))
}
func TestRtcpReceiverOverflow(t *testing.T) {
func TestRTCPReceiverOverflow(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -85,7 +85,7 @@ func TestRtcpReceiverOverflow(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -100,7 +100,7 @@ func TestRtcpReceiverOverflow(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -115,7 +115,7 @@ func TestRtcpReceiverOverflow(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,
@@ -133,7 +133,7 @@ func TestRtcpReceiverOverflow(t *testing.T) {
require.Equal(t, expected, rr.Report(ts))
}
func TestRtcpReceiverPacketLost(t *testing.T) {
func TestRTCPReceiverPacketLost(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -146,7 +146,7 @@ func TestRtcpReceiverPacketLost(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -161,7 +161,7 @@ func TestRtcpReceiverPacketLost(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -176,7 +176,7 @@ func TestRtcpReceiverPacketLost(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,
@@ -199,7 +199,7 @@ func TestRtcpReceiverPacketLost(t *testing.T) {
require.Equal(t, expected, rr.Report(ts))
}
func TestRtcpReceiverOverflowPacketLost(t *testing.T) {
func TestRTCPReceiverOverflowPacketLost(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -212,7 +212,7 @@ func TestRtcpReceiverOverflowPacketLost(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -227,7 +227,7 @@ func TestRtcpReceiverOverflowPacketLost(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -242,7 +242,7 @@ func TestRtcpReceiverOverflowPacketLost(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,
@@ -265,7 +265,7 @@ func TestRtcpReceiverOverflowPacketLost(t *testing.T) {
require.Equal(t, expected, rr.Report(ts))
}
func TestRtcpReceiverReorderedPackets(t *testing.T) {
func TestRTCPReceiverReorderedPackets(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -278,7 +278,7 @@ func TestRtcpReceiverReorderedPackets(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -293,7 +293,7 @@ func TestRtcpReceiverReorderedPackets(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -308,7 +308,7 @@ func TestRtcpReceiverReorderedPackets(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,
@@ -326,7 +326,7 @@ func TestRtcpReceiverReorderedPackets(t *testing.T) {
require.Equal(t, expected, rr.Report(ts))
}
func TestRtcpReceiverJitter(t *testing.T) {
func TestRTCPReceiverJitter(t *testing.T) {
v := uint32(0x65f83afb)
rr := New(&v, 90000)
@@ -339,7 +339,7 @@ func TestRtcpReceiverJitter(t *testing.T) {
}
byts, _ := srPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtcp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTCP, byts)
rtpPkt := rtp.Packet{
Header: rtp.Header{
@@ -354,7 +354,7 @@ func TestRtcpReceiverJitter(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -369,7 +369,7 @@ func TestRtcpReceiverJitter(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 21, 0, time.UTC)
rr.ProcessFrame(ts, base.StreamTypeRtp, byts)
rr.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.ReceiverReport{
SSRC: 0x65f83afb,

View File

@@ -11,44 +11,44 @@ import (
"github.com/aler9/gortsplib/pkg/base"
)
// RtcpSender is a utility to generate RTCP sender reports.
type RtcpSender struct {
// RTCPSender is a utility to generate RTCP sender reports.
type RTCPSender struct {
clockRate float64
mutex sync.Mutex
// data from rtp packets
firstRtpReceived bool
firstRTPReceived bool
senderSSRC uint32
lastRtpTimeRtp uint32
lastRtpTimeTime time.Time
lastRTPTimeRTP uint32
lastRTPTimeTime time.Time
packetCount uint32
octetCount uint32
}
// New allocates a RtcpSender.
func New(clockRate int) *RtcpSender {
return &RtcpSender{
// New allocates a RTCPSender.
func New(clockRate int) *RTCPSender {
return &RTCPSender{
clockRate: float64(clockRate),
}
}
// ProcessFrame extracts the needed data from RTP or RTCP frames.
func (rs *RtcpSender) ProcessFrame(ts time.Time, streamType base.StreamType, buf []byte) {
func (rs *RTCPSender) ProcessFrame(ts time.Time, streamType base.StreamType, buf []byte) {
rs.mutex.Lock()
defer rs.mutex.Unlock()
if streamType == base.StreamTypeRtp {
if streamType == base.StreamTypeRTP {
pkt := rtp.Packet{}
err := pkt.Unmarshal(buf)
if err == nil {
if !rs.firstRtpReceived {
rs.firstRtpReceived = true
if !rs.firstRTPReceived {
rs.firstRTPReceived = true
rs.senderSSRC = pkt.SSRC
}
// always update time to minimize errors
rs.lastRtpTimeRtp = pkt.Timestamp
rs.lastRtpTimeTime = ts
rs.lastRTPTimeRTP = pkt.Timestamp
rs.lastRTPTimeTime = ts
rs.packetCount++
rs.octetCount += uint32(len(pkt.Payload))
@@ -58,11 +58,11 @@ func (rs *RtcpSender) ProcessFrame(ts time.Time, streamType base.StreamType, buf
// Report generates a RTCP sender report.
// It returns nil if no packets has been passed to ProcessFrame yet.
func (rs *RtcpSender) Report(ts time.Time) []byte {
func (rs *RTCPSender) Report(ts time.Time) []byte {
rs.mutex.Lock()
defer rs.mutex.Unlock()
if !rs.firstRtpReceived {
if !rs.firstRTPReceived {
return nil
}
@@ -77,7 +77,7 @@ func (rs *RtcpSender) Report(ts time.Time) []byte {
fractionalPart := uint32((s - float64(integerPart)) * 0xFFFFFFFF)
return uint64(integerPart)<<32 | uint64(fractionalPart)
}(),
RTPTime: rs.lastRtpTimeRtp + uint32((ts.Sub(rs.lastRtpTimeTime)).Seconds()*rs.clockRate),
RTPTime: rs.lastRTPTimeRTP + uint32((ts.Sub(rs.lastRTPTimeTime)).Seconds()*rs.clockRate),
PacketCount: rs.packetCount,
OctetCount: rs.octetCount,
}

View File

@@ -11,7 +11,7 @@ import (
"github.com/aler9/gortsplib/pkg/base"
)
func TestRtcpSender(t *testing.T) {
func TestRTCPSender(t *testing.T) {
rs := New(90000)
rtpPkt := rtp.Packet{
@@ -27,7 +27,7 @@ func TestRtcpSender(t *testing.T) {
}
byts, _ := rtpPkt.Marshal()
ts := time.Date(2008, 05, 20, 22, 15, 20, 0, time.UTC)
rs.ProcessFrame(ts, base.StreamTypeRtp, byts)
rs.ProcessFrame(ts, base.StreamTypeRTP, byts)
rtpPkt = rtp.Packet{
Header: rtp.Header{
@@ -42,7 +42,7 @@ func TestRtcpSender(t *testing.T) {
}
byts, _ = rtpPkt.Marshal()
ts = time.Date(2008, 05, 20, 22, 15, 20, 500000000, time.UTC)
rs.ProcessFrame(ts, base.StreamTypeRtp, byts)
rs.ProcessFrame(ts, base.StreamTypeRTP, byts)
expectedPkt := rtcp.SenderReport{
SSRC: 0xba9da416,

View File

@@ -588,7 +588,7 @@ func (sc *ServerConn) WriteFrame(trackID int, streamType StreamType, payload []b
track := sc.tracks[trackID]
if track.proto == StreamProtocolUDP {
if streamType == StreamTypeRtp {
if streamType == StreamTypeRTP {
return sc.s.conf.UDPRTPListener.write(sc.s.conf.WriteTimeout, payload, &net.UDPAddr{
IP: sc.ip(),
Zone: sc.zone(),