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