1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

RTC: Fix TWCC send bug

This commit is contained in:
winlin 2021-04-01 10:47:50 +08:00
parent 7ac4a4f4ca
commit bd1752a4b2
3 changed files with 59 additions and 33 deletions

View file

@ -1345,23 +1345,25 @@ srs_error_t SrsRtcPublishStream::send_periodic_twcc()
++_srs_pps_srtcps->sugar;
char pkt[kRtcpPacketSize];
SrsBuffer *buffer = new SrsBuffer(pkt, sizeof(pkt));
SrsAutoFree(SrsBuffer, buffer);
// limit the max count=1024 to avoid dead loop.
for (int i = 0; i < 1024 && rtcp_twcc_.need_feedback(); ++i) {
char pkt[kMaxUDPDataSize];
SrsBuffer *buffer = new SrsBuffer(pkt, sizeof(pkt));
SrsAutoFree(SrsBuffer, buffer);
rtcp_twcc_.set_feedback_count(twcc_fb_count_);
twcc_fb_count_++;
rtcp_twcc_.set_feedback_count(twcc_fb_count_);
twcc_fb_count_++;
if((err = rtcp_twcc_.encode(buffer)) != srs_success) {
return srs_error_wrap(err, "encode, count=%u", twcc_fb_count_);
if((err = rtcp_twcc_.encode(buffer)) != srs_success) {
return srs_error_wrap(err, "encode, count=%u", twcc_fb_count_);
}
if((err = session_->send_rtcp(pkt, buffer->pos())) != srs_success) {
return srs_error_wrap(err, "send twcc, count=%u", twcc_fb_count_);
}
}
int nb_protected_buf = buffer->pos();
if ((err = session_->transport_->protect_rtcp(pkt, &nb_protected_buf)) != srs_success) {
return srs_error_wrap(err, "protect rtcp, size=%u", nb_protected_buf);
}
return session_->sendonly_skt->sendto(pkt, nb_protected_buf, 0);
return err;
}
srs_error_t SrsRtcPublishStream::on_rtcp(SrsRtcpCommon* rtcp)