client: fix h264 decoding

This commit is contained in:
aler9
2022-04-08 17:52:24 +02:00
parent 5b37e9d5bb
commit fb5d2c31ce

View File

@@ -673,6 +673,13 @@ func (c *Client) playRecordStart() {
c.writeMutex.Unlock() c.writeMutex.Unlock()
if c.state == clientStatePlay { if c.state == clientStatePlay {
for _, ct := range c.tracks {
if _, ok := ct.track.(*TrackH264); ok {
ct.h264Decoder = &rtph264.Decoder{}
ct.h264Decoder.Init()
}
}
c.keepaliveTimer = time.NewTimer(c.keepalivePeriod) c.keepaliveTimer = time.NewTimer(c.keepalivePeriod)
switch *c.effectiveTransport { switch *c.effectiveTransport {
@@ -716,28 +723,19 @@ func (c *Client) playRecordStart() {
v := time.Now().Unix() v := time.Now().Unix()
c.tcpLastFrameTime = &v c.tcpLastFrameTime = &v
} }
} else { } else if *c.effectiveTransport == TransportUDP {
for _, ct := range c.tracks { for trackID, cct := range c.tracks {
if _, ok := ct.track.(*TrackH264); ok { ctrackID := trackID
ct.h264Decoder = &rtph264.Decoder{}
ct.h264Decoder.Init() cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod,
} cct.track.ClockRate(), func(pkt rtcp.Packet) {
c.WritePacketRTCP(ctrackID, pkt)
})
} }
if *c.effectiveTransport == TransportUDP { for _, cct := range c.tracks {
for trackID, cct := range c.tracks { cct.udpRTPListener.start(false)
ctrackID := trackID cct.udpRTCPListener.start(false)
cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod,
cct.track.ClockRate(), func(pkt rtcp.Packet) {
c.WritePacketRTCP(ctrackID, pkt)
})
}
for _, cct := range c.tracks {
cct.udpRTPListener.start(false)
cct.udpRTCPListener.start(false)
}
} }
} }