client: remove Client from OnPacket* arguments

This commit is contained in:
aler9
2021-11-12 17:46:25 +01:00
committed by Alessandro Ros
parent f304ec52fb
commit 922d74b940
10 changed files with 48 additions and 47 deletions

View File

@@ -138,9 +138,9 @@ type Client struct {
// called after every response. // called after every response.
OnResponse func(*base.Response) OnResponse func(*base.Response)
// called when a RTP packet arrives. // called when a RTP packet arrives.
OnPacketRTP func(*Client, int, []byte) OnPacketRTP func(int, []byte)
// called when a RTCP packet arrives. // called when a RTCP packet arrives.
OnPacketRTCP func(*Client, int, []byte) OnPacketRTCP func(int, []byte)
// //
// RTSP parameters // RTSP parameters
@@ -248,11 +248,11 @@ type Client struct {
func (c *Client) Start(scheme string, host string) error { func (c *Client) Start(scheme string, host string) error {
// callbacks // callbacks
if c.OnPacketRTP == nil { if c.OnPacketRTP == nil {
c.OnPacketRTP = func(c *Client, trackID int, payload []byte) { c.OnPacketRTP = func(trackID int, payload []byte) {
} }
} }
if c.OnPacketRTCP == nil { if c.OnPacketRTCP == nil {
c.OnPacketRTCP = func(c *Client, trackID int, payload []byte) { c.OnPacketRTCP = func(trackID int, payload []byte) {
} }
} }
@@ -763,10 +763,10 @@ func (c *Client) runReader() error {
if isRTP { if isRTP {
c.tracks[trackID].rtcpReceiver.ProcessPacketRTP(now, frame.Payload) c.tracks[trackID].rtcpReceiver.ProcessPacketRTP(now, frame.Payload)
c.OnPacketRTP(c, trackID, frame.Payload) c.OnPacketRTP(trackID, frame.Payload)
} else { } else {
c.tracks[trackID].rtcpReceiver.ProcessPacketRTCP(now, frame.Payload) c.tracks[trackID].rtcpReceiver.ProcessPacketRTCP(now, frame.Payload)
c.OnPacketRTCP(c, trackID, frame.Payload) c.OnPacketRTCP(trackID, frame.Payload)
} }
} }
} else { // Record } else { // Record
@@ -792,7 +792,7 @@ func (c *Client) runReader() error {
} }
if !isRTP { if !isRTP {
c.OnPacketRTCP(c, trackID, frame.Payload) c.OnPacketRTCP(trackID, frame.Payload)
} }
} }
} }

View File

@@ -169,7 +169,7 @@ func TestClientPublishSerial(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTCP: func(c *Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
require.Equal(t, 0, trackID) require.Equal(t, 0, trackID)
require.Equal(t, []byte{0x05, 0x06, 0x07, 0x08}, payload) require.Equal(t, []byte{0x05, 0x06, 0x07, 0x08}, payload)
close(recvDone) close(recvDone)
@@ -1012,10 +1012,10 @@ func TestClientPublishIgnoreTCPRTPPackets(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
t.Errorf("should not happen") t.Errorf("should not happen")
}, },
OnPacketRTCP: func(c *Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
close(rtcpReceived) close(rtcpReceived)
}, },
} }

View File

@@ -410,21 +410,22 @@ func TestClientRead(t *testing.T) {
return &v return &v
} }
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { }
// ignore multicast loopback
if transport == "multicast" { c.OnPacketRTP = func(trackID int, payload []byte) {
counter++ // ignore multicast loopback
if counter <= 1 || counter >= 3 { if transport == "multicast" {
return counter++
} if counter <= 1 || counter >= 3 {
return
} }
}
require.Equal(t, 0, trackID) require.Equal(t, 0, trackID)
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, payload) require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, payload)
err := c.WritePacketRTCP(0, []byte{0x05, 0x06, 0x07, 0x08}) err := c.WritePacketRTCP(0, []byte{0x05, 0x06, 0x07, 0x08})
require.NoError(t, err) require.NoError(t, err)
},
} }
err = c.StartReading(scheme + "://" + listenIP + ":8554/test/stream?param=value") err = c.StartReading(scheme + "://" + listenIP + ":8554/test/stream?param=value")
@@ -541,8 +542,8 @@ func TestClientReadNonStandardFrameSize(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, id int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
require.Equal(t, 0, id) require.Equal(t, 0, trackID)
require.Equal(t, refPayload, payload) require.Equal(t, refPayload, payload)
close(frameRecv) close(frameRecv)
}, },
@@ -655,7 +656,7 @@ func TestClientReadPartial(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
require.Equal(t, 0, trackID) require.Equal(t, 0, trackID)
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, payload) require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, payload)
close(frameRecv) close(frameRecv)
@@ -900,7 +901,7 @@ func TestClientReadAnyPort(t *testing.T) {
c := &Client{ c := &Client{
AnyPortEnable: true, AnyPortEnable: true,
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
close(frameRecv) close(frameRecv)
}, },
} }
@@ -1017,7 +1018,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) {
frameRecv := make(chan struct{}) frameRecv := make(chan struct{})
c := Client{ c := Client{
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
close(frameRecv) close(frameRecv)
}, },
} }
@@ -1219,7 +1220,7 @@ func TestClientReadAutomaticProtocol(t *testing.T) {
c := &Client{ c := &Client{
ReadTimeout: 1 * time.Second, ReadTimeout: 1 * time.Second,
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
close(frameRecv) close(frameRecv)
}, },
} }
@@ -1343,7 +1344,7 @@ func TestClientReadDifferentInterleavedIDs(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
require.Equal(t, 0, trackID) require.Equal(t, 0, trackID)
close(frameRecv) close(frameRecv)
}, },
@@ -1488,7 +1489,7 @@ func TestClientReadRedirect(t *testing.T) {
frameRecv := make(chan struct{}) frameRecv := make(chan struct{})
c := Client{ c := Client{
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
close(frameRecv) close(frameRecv)
}, },
} }
@@ -1688,7 +1689,7 @@ func TestClientReadPause(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
if atomic.SwapInt32(&firstFrame, 1) == 0 { if atomic.SwapInt32(&firstFrame, 1) == 0 {
close(frameRecv) close(frameRecv)
} }
@@ -1861,13 +1862,13 @@ func TestClientReadRTCPReport(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
recv++ recv++
if recv >= 3 { if recv >= 3 {
close(recvDone) close(recvDone)
} }
}, },
OnPacketRTCP: func(c *Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
recv++ recv++
if recv >= 3 { if recv >= 3 {
close(recvDone) close(recvDone)
@@ -2156,7 +2157,7 @@ func TestClientReadIgnoreTCPInvalidTrack(t *testing.T) {
v := TransportTCP v := TransportTCP
return &v return &v
}(), }(),
OnPacketRTP: func(c *Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
close(recv) close(recv)
}, },
} }

View File

@@ -169,10 +169,10 @@ func (l *clientUDPListener) run() {
if l.isRTP { if l.isRTP {
l.c.tracks[l.trackID].rtcpReceiver.ProcessPacketRTP(now, buf[:n]) l.c.tracks[l.trackID].rtcpReceiver.ProcessPacketRTP(now, buf[:n])
l.c.OnPacketRTP(l.c, l.trackID, buf[:n]) l.c.OnPacketRTP(l.trackID, buf[:n])
} else { } else {
l.c.tracks[l.trackID].rtcpReceiver.ProcessPacketRTCP(now, buf[:n]) l.c.tracks[l.trackID].rtcpReceiver.ProcessPacketRTCP(now, buf[:n])
l.c.OnPacketRTCP(l.c, l.trackID, buf[:n]) l.c.OnPacketRTCP(l.trackID, buf[:n])
} }
} }
} else { // record } else { // record
@@ -191,7 +191,7 @@ func (l *clientUDPListener) run() {
now := time.Now() now := time.Now()
atomic.StoreInt64(l.lastFrameTime, now.Unix()) atomic.StoreInt64(l.lastFrameTime, now.Unix())
l.c.OnPacketRTCP(l.c, l.trackID, buf[:n]) l.c.OnPacketRTCP(l.trackID, buf[:n])
} }
} }
} }

View File

@@ -19,7 +19,7 @@ func main() {
c := gortsplib.Client{ c := gortsplib.Client{
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
if trackID != h264Track { if trackID != h264Track {
return return
} }

View File

@@ -20,7 +20,7 @@ func main() {
c := gortsplib.Client{ c := gortsplib.Client{
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
if trackID != h264Track { if trackID != h264Track {
return return
} }

View File

@@ -21,11 +21,11 @@ func main() {
// timeout of write operations // timeout of write operations
WriteTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second,
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload))
}, },
// called when a RTCP packet arrives // called when a RTCP packet arrives
OnPacketRTCP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload))
}, },
} }

View File

@@ -15,11 +15,11 @@ import (
func main() { func main() {
c := gortsplib.Client{ c := gortsplib.Client{
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload))
}, },
// called when a RTCP packet arrives // called when a RTCP packet arrives
OnPacketRTCP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload))
}, },
} }

View File

@@ -16,11 +16,11 @@ import (
func main() { func main() {
c := gortsplib.Client{ c := gortsplib.Client{
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload))
}, },
// called when a RTCP packet arrives // called when a RTCP packet arrives
OnPacketRTCP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload))
}, },
} }

View File

@@ -12,11 +12,11 @@ import (
func main() { func main() {
c := gortsplib.Client{ c := gortsplib.Client{
// called when a RTP packet arrives // called when a RTP packet arrives
OnPacketRTP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTP: func(trackID int, payload []byte) {
fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTP packet from track %d, size %d\n", trackID, len(payload))
}, },
// called when a RTCP packet arrives // called when a RTCP packet arrives
OnPacketRTCP: func(c *gortsplib.Client, trackID int, payload []byte) { OnPacketRTCP: func(trackID int, payload []byte) {
fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload)) fmt.Printf("RTCP packet from track %d, size %d\n", trackID, len(payload))
}, },
} }