mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 23:26:54 +08:00
client: remove Client from OnPacket* arguments
This commit is contained in:
14
client.go
14
client.go
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@@ -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])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@@ -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))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@@ -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))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@@ -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))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user