Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1313)

Unified Diff: webrtc/video/payload_router.cc

Issue 1913073002: Extract common simulcast logic from VP8 wrapper and simulcast adapter (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Address comments, added tests Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/video/payload_router.cc
diff --git a/webrtc/video/payload_router.cc b/webrtc/video/payload_router.cc
index 3be5882cdbf2172928fe312caf2a9b3401d1ea9b..3784215bc377ee6b9e442cb26ae37fea339401ee 100644
--- a/webrtc/video/payload_router.cc
+++ b/webrtc/video/payload_router.cc
@@ -85,12 +85,19 @@ void CopyCodecSpecific(const CodecSpecificInfo* info, RTPVideoHeader* rtp) {
}
}
+VideoCodec DefaultCodec() {
+ VideoCodec codec;
+ memset(&codec, 0, sizeof(VideoCodec));
+ return codec;
+}
+
} // namespace
PayloadRouter::PayloadRouter(const std::vector<RtpRtcp*>& rtp_modules,
int payload_type)
: active_(false),
num_sending_modules_(1),
+ simulcast_state_(DefaultCodec()),
rtp_modules_(rtp_modules),
payload_type_(payload_type) {
UpdateModuleSendingState();
@@ -170,21 +177,20 @@ void PayloadRouter::SetTargetSendBitrate(uint32_t bitrate_bps) {
rtc::CritScope lock(&crit_);
RTC_DCHECK_LE(streams_.size(), rtp_modules_.size());
- // TODO(sprang): Rebase https://codereview.webrtc.org/1913073002/ on top of
- // this.
- int bitrate_remainder = bitrate_bps;
- for (size_t i = 0; i < streams_.size() && bitrate_remainder > 0; ++i) {
- int stream_bitrate = 0;
- if (streams_[i].max_bitrate_bps > bitrate_remainder) {
- stream_bitrate = bitrate_remainder;
- } else {
- stream_bitrate = streams_[i].max_bitrate_bps;
- }
- bitrate_remainder -= stream_bitrate;
- rtp_modules_[i]->SetTargetSendBitrate(stream_bitrate);
+ if (simulcast_state_.NumStreams() > 0) {
+ simulcast_state_.AllocateBitrate(bitrate_bps);
+ for (auto& stream : simulcast_state_.Streams())
+ rtp_modules_[stream.idx]->SetTargetSendBitrate(stream.allocated_rate_bps);
+ } else {
+ rtp_modules_[0]->SetTargetSendBitrate(bitrate_bps);
}
}
+void PayloadRouter::UpdateSimulcastState(const SimulcastState& state) {
+ rtc::CritScope lock(&crit_);
+ simulcast_state_ = state;
+}
+
size_t PayloadRouter::MaxPayloadLength() const {
size_t min_payload_length = DefaultMaxPayloadLength();
rtc::CritScope lock(&crit_);

Powered by Google App Engine
This is Rietveld 408576698