mirror of
https://github.com/aler9/gortsplib
synced 2025-10-04 14:52:46 +08:00
client: add parameter 'containsKeyFrame' to WritePacketRTP; fix RTCP sender reports
This commit is contained in:
@@ -1823,7 +1823,7 @@ func (c *Client) runWriter() {
|
||||
}
|
||||
|
||||
// WritePacketRTP writes a RTP packet.
|
||||
func (c *Client) WritePacketRTP(trackID int, pkt *rtp.Packet) error {
|
||||
func (c *Client) WritePacketRTP(trackID int, pkt *rtp.Packet, ptsEqualsDTS bool) error {
|
||||
c.writeMutex.RLock()
|
||||
defer c.writeMutex.RUnlock()
|
||||
|
||||
@@ -1842,7 +1842,7 @@ func (c *Client) WritePacketRTP(trackID int, pkt *rtp.Packet) error {
|
||||
}
|
||||
|
||||
if c.tracks[trackID].rtcpSender != nil {
|
||||
c.tracks[trackID].rtcpSender.ProcessPacketRTP(time.Now(), pkt, true)
|
||||
c.tracks[trackID].rtcpSender.ProcessPacketRTP(time.Now(), pkt, ptsEqualsDTS)
|
||||
}
|
||||
|
||||
c.writeBuffer.Push(trackTypePayload{
|
||||
|
@@ -253,14 +253,14 @@ func TestClientPublishSerial(t *testing.T) {
|
||||
c.Wait()
|
||||
}()
|
||||
|
||||
err = c.WritePacketRTP(0, &testRTPPacket)
|
||||
err = c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
<-recvDone
|
||||
c.Close()
|
||||
<-done
|
||||
|
||||
err = c.WritePacketRTP(0, &testRTPPacket)
|
||||
err = c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
require.Error(t, err)
|
||||
})
|
||||
}
|
||||
@@ -413,7 +413,7 @@ func TestClientPublishParallel(t *testing.T) {
|
||||
defer t.Stop()
|
||||
|
||||
for range t.C {
|
||||
err := c.WritePacketRTP(0, &testRTPPacket)
|
||||
err := c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -567,7 +567,7 @@ func TestClientPublishPauseSerial(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer c.Close()
|
||||
|
||||
err = c.WritePacketRTP(0, &testRTPPacket)
|
||||
err = c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = c.Pause()
|
||||
@@ -576,7 +576,7 @@ func TestClientPublishPauseSerial(t *testing.T) {
|
||||
_, err = c.Record()
|
||||
require.NoError(t, err)
|
||||
|
||||
err = c.WritePacketRTP(0, &testRTPPacket)
|
||||
err = c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
@@ -711,7 +711,7 @@ func TestClientPublishPauseParallel(t *testing.T) {
|
||||
defer t.Stop()
|
||||
|
||||
for range t.C {
|
||||
err := c.WritePacketRTP(0, &testRTPPacket)
|
||||
err := c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -853,7 +853,7 @@ func TestClientPublishAutomaticProtocol(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
defer c.Close()
|
||||
|
||||
err = c.WritePacketRTP(0, &testRTPPacket)
|
||||
err = c.WritePacketRTP(0, &testRTPPacket, true)
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -1002,7 +1002,7 @@ func TestClientPublishRTCPReport(t *testing.T) {
|
||||
SSRC: 753621,
|
||||
},
|
||||
Payload: []byte{0x01, 0x02, 0x03, 0x04},
|
||||
})
|
||||
}, true)
|
||||
require.NoError(t, err)
|
||||
|
||||
<-reportReceived
|
||||
|
@@ -57,7 +57,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
err = c.WritePacketRTP(0, &pkt)
|
||||
err = c.WritePacketRTP(0, &pkt, true)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
err = c.WritePacketRTP(0, &pkt)
|
||||
err = c.WritePacketRTP(0, &pkt, true)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -68,7 +68,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
err = c.WritePacketRTP(0, &pkt)
|
||||
err = c.WritePacketRTP(0, &pkt, true)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
err = c.WritePacketRTP(0, &pkt)
|
||||
err = c.WritePacketRTP(0, &pkt, true)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -62,7 +62,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
c.WritePacketRTP(0, &pkt)
|
||||
c.WritePacketRTP(0, &pkt, true)
|
||||
|
||||
// read another RTP packet from source
|
||||
n, _, err = pc.ReadFrom(buf)
|
||||
|
@@ -55,7 +55,7 @@ func main() {
|
||||
}
|
||||
|
||||
// route RTP packet to the server
|
||||
err = c.WritePacketRTP(0, &pkt)
|
||||
err = c.WritePacketRTP(0, &pkt, true)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@@ -47,7 +47,7 @@ func main() {
|
||||
|
||||
// called when a RTP packet arrives
|
||||
reader.OnPacketRTP = func(trackID int, pkt *rtp.Packet) {
|
||||
publisher.WritePacketRTP(trackID, pkt)
|
||||
publisher.WritePacketRTP(trackID, pkt, true)
|
||||
}
|
||||
|
||||
// start reading tracks
|
||||
|
Reference in New Issue
Block a user