Skip to content

Commit 5eda627

Browse files
committed
add mutex for REMB access control and change remb_startup type to int
1 parent c182f09 commit 5eda627

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

trunk/src/app/srs_app_rtc_conn.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,7 @@ SrsRtcPublishStream::SrsRtcPublishStream(SrsRtcConnection* session, const SrsCon
11261126

11271127
bitrate_ = 0;
11281128
remb_startup_ = 4;
1129+
lock_remb_ = srs_mutex_new();
11291130

11301131
timer_rtcp_ = new SrsRtcPublishRtcpTimer(this);
11311132
timer_twcc_ = new SrsRtcPublishTwccTimer(this);
@@ -1137,6 +1138,7 @@ SrsRtcPublishStream::~SrsRtcPublishStream()
11371138
session_->server_->exec_async_work(new SrsRtcAsyncCallOnUnpublish(cid_, req_));
11381139
}
11391140

1141+
srs_mutex_destroy(lock_remb_);
11401142
srs_freep(timer_rtcp_);
11411143
srs_freep(timer_twcc_);
11421144

@@ -1374,6 +1376,10 @@ srs_error_t SrsRtcPublishStream::send_rtcp_rr()
13741376
srs_error_t SrsRtcPublishStream::send_rtcp_remb()
13751377
{
13761378
srs_error_t err = srs_success;
1379+
1380+
// Serialize access from both timer and per-packet paths.
1381+
SrsLocker(lock_remb_);
1382+
13771383
uint32_t bitrate = bitrate_;
13781384

13791385
// no bitrate control
@@ -1403,7 +1409,6 @@ srs_error_t SrsRtcPublishStream::send_rtcp_remb()
14031409
return srs_error_wrap(err, "rtcp remb send error(ssrc=%u, bitrate=%llu)" , ssrc, (unsigned long long)bitrate);
14041410
}
14051411

1406-
14071412
return err;
14081413
}
14091414

trunk/src/app/srs_app_rtc_conn.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,8 @@ class SrsRtcPublishStream : public ISrsRtspPacketDecodeHandler
342342
bool nack_no_copy_;
343343
bool twcc_enabled_;
344344
uint64_t bitrate_;
345-
uint64_t remb_startup_;
345+
int remb_startup_;
346+
srs_mutex_t lock_remb_;
346347
private:
347348
bool request_keyframe_;
348349
SrsErrorPithyPrint* pli_epp;

0 commit comments

Comments
 (0)